我已经问过这个问题所以,但问题似乎可能出在链接器上。
因此,问题是:
我正在尝试使用 构建一个项目$ make
,但是失败了:
host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so)
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.a when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libneo_cgi.so] Error 1
现在看看这个库:
$ ls -l /usr/lib/libz.so
lrwxrwxrwx 1 root root 20 2010-07-07 17:08 /usr/lib/libz.so -> /lib/libz.so.1.2.3.3
$ file /lib/libz.so.1.2.3.3
/lib/libz.so.1.2.3.3: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
我有:
$ arch
i686
我像这样安装这个库:
sudo apt-get install libz-dev
那么..我该如何解决这个问题?我该如何让 Ubuntu 将来下载正确的库?我实际上不确定:这是真正的问题,还是在其他地方?
我也无法安装一些必需的软件包:
E: Couldn't find package lib32z1-dev
E: Couldn't find package lib32ncurses5-dev
PS Ubuntu 10.04 LTS,运行在联想 ThinkPad SL500、Core 2 DUO CPU 上。
答案1
我在运行 Ubuntu 10.04 上网本版本的 Lenovo Netbook s10e Intel Atom 上也遇到了同样的问题。经过无数个小时在网上搜索答案后,我听说这与 Java6 检查和强制在 32 位系统上使用 64 位 Clearsilver 构建有关。解决方案是回滚位于此处的 clearsilver 路径:http://android.git.kernel.org/?p=platform/external/clearsilver.git;a=commitdiff;h=d36910a8110d8377b22301274d2b5131a732a72b
不幸的是,我不确定具体该如何做。我使用了 repo 中的放弃功能来删除列出的那些 .mk 链接,但并没有改变错误。
非常感谢您的帮助。
答案2
Lucid Lynx 的规范(不是“规范”)包名称是zlib1g-dev
和libncurses5
。
只是好奇,这个名字是你发明的libz-dev
还是一些文献引导你找到的?
答案3
您的系统似乎正常,但构建过程可能出现问题。make 会告诉您构建时使用的命令吗?
答案4
看来我已经解决了这个问题。我用 sun-jdk5(添加了 Jaunty 的 repo)替换了我的 jdk6,并用它替换了我的默认 jdk6:
sudo update-java-alternatives --set java-1.5.0-sun
我周末一直用笔记本电脑进行编译,现在看来,它成功了。