LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: puzzlebird

成功移植Fcitx2.0.1到Mac OSX (贴图)

[复制链接]
发表于 2004-4-16 09:22:43 | 显示全部楼层
最初由 高原之狼 发表
测试结果(on OS X 10.3.3 (Panther), Darwin 7.3.0, X11 1.0(2004-03-20)):

./configure 正常,make 时出现错误:

  1. $ make
  2. cd . && /bin/sh /Users/minghua/Desktop/work/fcitx/missing --run aclocal-1.6
  3. cd . && \
  4.   /bin/sh /Users/minghua/Desktop/work/fcitx/missing --run automake-1.6 --foreign  Makefile
  5. cd . && /bin/sh /Users/minghua/Desktop/work/fcitx/missing --run autoconf
  6. /bin/sh ./config.status --recheck
  7. running /bin/sh ./configure   --no-create --no-recursion
  8. checking for a BSD-compatible install... /usr/bin/install -c
  9. checking whether build environment is sane... yes
  10. ... (snipped)
  11. checking sys/param.h presence... yes
  12. checking for sys/param.h... yes
  13. checking for unistd.h... (cached) yes
  14. checking for X... libraries /usr/X11R6/lib, headers
  15. ./configure: line 3848: syntax error near unexpected token `XFT,'
  16. ./configure: line 3848: `  PKG_CHECK_MODULES(XFT, xft >= 0.0.0, have_xft=true, :)'
  17. make: *** [config.status] Error 2
复制代码

然后再重新运行 ./configure 出现同样的错误,make clean 也是同样的过程和错误。

感谢 puzzlebird 和 idkey 为 porting 所做的工作。

对不起,忘了从cvs检出的话文件的日期会有先后,这造成了autoconf的重新部署,这本应该是开发人员的事情。现在我把它打成了一个发布包,应该不会有 make 时自己重新检查系统配置的问题了,请下载这个文件(1.4M):
http://fcitx.cosoft.org.cn/fcitx-2.0.2-osx.tar.gz
解开,进入目录重复上面的编译步骤:
tar zxf fcitx-2.0.2-osx.tar.gz
cd fcitx-2.0.2-osx/
./configure && make
发表于 2004-4-17 00:46:38 | 显示全部楼层
最初由 idkey 发表
对不起,忘了从cvs检出的话文件的日期会有先后,这造成了autoconf的重新部署,这本应该是开发人员的事情。现在我把它打成了一个发布包,应该不会有 make 时自己重新检查系统配置的问题了,请下载这个文件(1.4M):
http://fcitx.cosoft.org.cn/fcitx-2.0.2-osx.tar.gz

Hmm, strange error:

  1. ...
  2. source='IMConn.c' object='IMConn.o' libtool=no \
  3. depfile='.deps/IMConn.Po' tmpdepfile='.deps/IMConn.TPo' \
  4. depmode=gcc3 /bin/sh ../depcomp \
  5. gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME=""
  6. -DPACKAGE_VERSION="" -DPACKAGE_STRING=""
  7. -DPACKAGE_BUGREPORT="" -DPACKAGE="fcitx" -DVERSION="2.0.2-osx"
  8. -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_TYPES_H=1
  9. -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1
  10. -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
  11. -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1
  12. -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1
  13. -DHAVE_UNISTD_H=1 -DDARWIN=1 -DHAVE_UNISTD_H=1 -DHAVE_FORK=1
  14. -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_STDLIB_H=1
  15. -DHAVE_MALLOC=1 -DRETSIGTYPE=int -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1
  16. -DHAVE_SETLOCALE=1 -DHAVE_STRCASECMP=1 -DHAVE_STRTOL=1  -I. -I.   
  17. -c -O2 -fno-strength-reduce -fno-strict-aliasing -g -O2  -Wall -Werror -c `test -f
  18. 'IMConn.c' || echo './'`IMConn.c
  19. IMConn.c: In function `_IMVaToNestedList':
  20. IMConn.c:70: warning: implicit declaration of function `malloc'
  21. make[1]: *** [IMConn.o] Error 1
  22. make: *** [all-recursive] Error 1
复制代码

My /usr/include/sys/malloc.h doesn't include any declaration of malloc().

By the way, you can tell me how to use CVS, I have autoconf and automake here (saw them, never used though).

Thanks.

Edit:  manually break the lines in the output.
发表于 2004-4-17 09:08:01 | 显示全部楼层
to 高原之狼:
要访问cvs,得先在cosoft上注册用户,然后加入fcitx项目组(你可以发邮件告诉我你的帐号,我会把你加进来),请参考这个帖子:
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=87234
发表于 2004-4-17 09:22:09 | 显示全部楼层
看了看 configure,它里面测试 malloc 的代码是这样的:
[php]#if STDC_HEADERS || HAVE_STDLIB_H
# include <stdlib.h>
#else
char *malloc ();
#endif

int
main ()
{
exit (malloc (0) ? 0 : 1);
  ;
  return 0;
}[/php]
看来malloc现在是在stdlib里定义的,可能lib/里面的代码里都要加上
#include <stdlib.h>
才行。你可以先在osx上试试。
发表于 2004-4-18 04:06:44 | 显示全部楼层
无论如何,向各位致敬…………
发表于 2004-4-18 12:08:48 | 显示全部楼层
最初由 idkey 发表
看了看 configure,它里面测试 malloc 的代码是这样的:
[php]#if STDC_HEADERS || HAVE_STDLIB_H
# include <stdlib.h>
#else
char *malloc ();
#endif

int
main ()
{
exit (malloc (0) ? 0 : 1);
  ;
  return 0;
}[/php]
看来malloc现在是在stdlib里定义的,可能lib/里面的代码里都要加上
#include <stdlib.h>
才行。你可以先在osx上试试。


在 OS X 中是
[php]#include <malloc/malloc.h>[/php]

顺便问一下,可以把我加到 fcitx 的项目组中吗?我在 cosoft 中的 id 是 jeffye。我做了一个可以在 OS X 和 redhat 下编译通过的版本,但一直没有能够添加到 fcitx 的 CVS 中。
发表于 2004-4-18 12:20:06 | 显示全部楼层
最初由 jeff_yecn 发表
在 OS X 中是
[php]#include <malloc/malloc.h>[/php]

顺便问一下,可以把我加到 fcitx 的项目组中吗?我在 cosoft 中的 id 是 jeffye。我做了一个可以在 OS X 和 redhat 下编译通过的版本,但一直没有能够添加到 fcitx 的 CVS 中。

很高兴有这么多用 osx 的朋友来帮忙,欢迎 jeff_yecn 加入 fcitx 的开发,不过你得先把你的patch给我看看,让我们知道你是有资格使用 cvs 的。请发到论坛或我的邮箱 xyb@users.cosoft.org.cn
发表于 2004-4-18 13:51:18 | 显示全部楼层
最初由 idkey 发表
to 高原之狼:
要访问cvs,得先在cosoft上注册用户,然后加入fcitx项目组(你可以发邮件告诉我你的帐号,我会把你加进来)

我没说清楚,我的意思不是要向 CVS 提交,我只是说我可以直接 checkout (anonymously) CVS HEAD ,然后用 autotools 编译,这样就不用你每次做 tarball 了。

最近的测试结果是,如果全都手动改过来的话,是可以编译的,但是运行还有问题(很可能是我的系统设置的问题,我会再研究一下)。现在主要的问题有两个,一是我的系统和很多地方写的都不一样,没有 /usr/include/sys/wait.h,/usr/include/sys/malloc.h 里面也没有定义 malloc(),不只是不是我少安装了什么东西。二是 src/ 下面生成的 Makefile 有问题,没有 DARWIN 的定义,所以你在源码里写的针对 OS X 的条件编译就都没有用了。而且 lib/ 下的 Makefile 是好的,所以象是 autotool scripts 的问题。我附上我的 src/Makefile,你看能不能看出问题所在来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2004-4-18 13:55:02 | 显示全部楼层
最初由 jeff_yecn 发表
在 OS X 中是
[php]#include <malloc/malloc.h>[/php]

我的 /usr/include/malloc/malloc.h 里没有 malloc() 的声明,不知是为什么。请问您的系统版本是什么?
最初由 jeff_yecn 发表
顺便问一下,可以把我加到 fcitx 的项目组中吗?我在 cosoft 中的 id 是 jeffye。我做了一个可以在 OS X 和 redhat 下编译通过的版本,但一直没有能够添加到 fcitx 的 CVS 中。

如果您可以贴一个 patch 出来的话,我愿意测试。
发表于 2004-4-18 16:31:32 | 显示全部楼层
最初由 高原之狼 发表
我的 /usr/include/malloc/malloc.h 里没有 malloc() 的声明,不知是为什么。请问您的系统版本是什么?

如果您可以贴一个 patch 出来的话,我愿意测试。


可以在这里下载修改后的完整压缩档:http://vip.sinomac.net/jeff/unix/fcitx-2.0.1.tar.gz

malloc 函数本身的声明正如 idkey 所说,在 stdlib.h 中。malloc/malloc.h 还包含一些其它的声明(我没有仔细去研究 fcitx 中是否需要用到它们,只是简单地判断是存在 malloc.h 还是 malloc/malloc.h,然后分别 include 进来)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表