在编译一个项目的时候遇到编译错误
编译环境 ubuntu 10.10 Android2.3.4编译错误如下:
target StaticLib: librecovery_updater_htc (out/target/product/t34h/obj/STATIC_LIBRARIES/librecovery_updater_htc_intermediates/librecovery_updater_htc.a)
target StaticLib: libsafe_iop (out/target/product/t34h/obj/STATIC_LIBRARIES/libsafe_iop_intermediates/libsafe_iop.a)
target StaticLib: libspeex (out/target/product/t34h/obj/STATIC_LIBRARIES/libspeex_intermediates/libspeex.a)
target StaticLib: libutils (out/target/product/t34h/obj/STATIC_LIBRARIES/libutils_intermediates/libutils.a)
target StaticLib: libvold (out/target/product/t34h/obj/STATIC_LIBRARIES/libvold_intermediates/libvold.a)
host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)
host SharedLib: libneo_cs (out/host/linux-x86/obj/lib/libneo_cs.so)
true
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: skipping incompatible out/host/linux-x86/obj/lib/libneo_util.so when searching for -lneo_util
/usr/bin/ld: cannot find -lneo_util
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libneo_cs.so] 错误 1
make: *** 正在等待未完成的任务....-----------------------------------------------------------------------------------------请高手指点一下
google 不到缺少那个包。

解决方案 »

  1.   

    这是可能是因为你ubuntu的库不全,没有生成libneo_util.so ,或者lz改动了什么。在生成libneo_util.so这个库的过程中你可能需要 安装一些库 sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib lib64stdc++6 。
      

  2.   

    makefile贴出来。
    -lneo_util 这有没有指定库的搜索路径? 搜索路径中有没有libneo_util.so?
      

  3.   


    这个工程的确没有生成libneo_util.so,我拿到的是在别人机器上已经编译通过的代码,未做任何改动,就是怀疑编译环境还是有问题,但是在这个环境下,编译原生的android2.3,4.0都没有问题。需要的库在10.10下无法安装
    错误信息如下:现在没有可用的软件包 lib64stdc++6,但是它被其它的软件包引用了。
    这可能意味着这个缺失的软件包可能已被废弃,
    或者只能在其他发布源中找到E: 未发现软件包 lib64z1-dev
    E: 未发现软件包 libc6-dev-amd64
    E: 软件包 lib64stdc++6 没有可供安装的候选者
    在网上也没有查到如何解决,还望继续指点...
      

  4.   

    makefile贴出来。
    -lneo_util 这有没有指定库的搜索路径? 搜索路径中有没有libneo_util.so?
    需要添加编译指令
      

  5.   


    对编译这块不是很熟,怎么找到对应的makefile?
    这个是编译libneo_cs 在external\clearsilver\cs 目录下makefile,
    不知道对不对
    libneo_util.so这个文件在工程里找不到
    --------------------
    ifeq ($(NEOTONIC_ROOT),)
    NEOTONIC_ROOT = ..
    endifinclude $(NEOTONIC_ROOT)/rules.mkCS_LIB = $(LIB_DIR)libneo_cs.a
    CS_SRC = csparse.c
    CS_OBJ = $(CS_SRC:%.c=%.o)CSTEST_EXE = cstest
    CSTEST_SRC = cstest.c
    CSTEST_OBJ = $(CSTEST_SRC:%.c=%.o)CSR_EXE = cs
    CSR_SRC = cs.c
    CSR_OBJ = $(CSR_SRC:%.c=%.o)CSDUMP_EXE = csdump
    CSDUMP_SRC = csdump.c
    CSDUMP_OBJ = $(CSDUMP_SRC:%.c=%.o)LIBS += -lneo_cs -lneo_utl #  -lefenceTARGETS = $(CS_LIB) $(CSTEST_EXE) $(CSR_EXE) testCS_TESTS = test.cs test2.cs test3.cs test4.cs test5.cs test6.cs test7.cs \
               test8.cs test9.cs test10.cs test11.cs test12.cs test13.cs \
       test14.cs test15.cs test16.cs test17.cs test18.cs test19.cs \
       test_var.cs test_paren.cs test_chuck.cs test_trak1.cs test_iter.cs \
       test_each_array.cs test_name.cs test_with.cs test_numbers.cs \
       test_splice.cs test_joo.cs test_first_last.cs test_abs_max_min.cs \
       test_comma.cs test_macro_set.cs test_func.cs test_escape.cs \
       test_uvar.cs test_crc.cs
    all: $(TARGETS)$(CS_LIB): $(CS_OBJ)
    $(AR) $@ $(CS_OBJ)
    $(RANLIB) $@$(CSTEST_EXE): $(CSTEST_OBJ) $(CS_LIB)
    $(LD) $@ $(CSTEST_OBJ) $(LDFLAGS) $(LIBS) # -lefence$(CSR_EXE): $(CSR_OBJ) $(CS_LIB)
    $(LD) $@ $(CSR_OBJ) $(LDFLAGS) $(LIBS) # -lefence$(CSDUMP_EXE): $(CSDUMP_OBJ) $(CS_LIB)
    $(LD) $@ $(CSDUMP_OBJ) $(LDFLAGS) $(LIBS)## BE VERY CAREFUL WHEN REGENERATING THESE
    gold: $(CSTEST_EXE)
    @for test in $(CS_TESTS); do \
    rm -f $$test.gold; \
    ./cstest test.hdf $$test > $$test.gold; \
    done; \
    ./cstest test_tag.hdf test_tag.cs > test_tag.cs.gold
    @echo "Generated Gold Files"test: $(CSTEST_EXE) $(CS_TESTS) 
    @echo "Running cs regression tests"
    @failed=0; \
    for test in $(CS_TESTS); do \
    rm -f $$test.out; \
    ./cstest test.hdf $$test > $$test.out 2>&1; \
    diff $$test.out $$test.gold 2>&1 > /dev/null; \
    return_code=$$?; \
    if [ $$return_code -ne 0 ]; then \
      diff $$test.gold $$test.out > $$test.err; \
      echo "Failed Regression Test: $$test"; \
      echo "  See $$test.out and $$test.err"; \
      failed=1; \
    fi; \
    done; \
    rm -f test_tag.cs.out; \
    ./cstest test_tag.hdf test_tag.cs> test_tag.cs.out 2>&1; \
    diff test_tag.cs.out test_tag.cs.gold; \
    return_code=$$?; \
    if [ $$return_code -ne 0 ]; then \
      echo "Failed Regression Test: test_tag.cs"; \
      failed=1; \
    fi; \
    if [ $$failed -eq 1 ]; then \
      exit 1; \
    fi;
    @touch test
    @echo "Passed"

    install: all
    $(NEOTONIC_ROOT)/mkinstalldirs $(DESTDIR)$(cs_includedir)/cs
    $(INSTALL) -m 644 cs.h $(DESTDIR)$(cs_includedir)/cs
    $(INSTALL) -m 644 $(CS_LIB) $(DESTDIR)$(libdir)
    $(INSTALL) $(CSTEST_EXE) $(DESTDIR)$(bindir)
    $(INSTALL) $(CSR_EXE) $(DESTDIR)$(bindir)clean:
    $(RM) core *.odistclean:
    $(RM) Makefile.depends $(TARGETS) core *.o *.out--------------------
      

  6.   

    百度一下请参考:http://blog.csdn.net/piaozhiye/article/details/6662002
    如下:
    问题二:
    cannot find -lneo_util
    需要JDK1.6
      

  7.   

    lz的10.10是64位的还是32位的?
    被引用的库安装出问题一般都是安装第三方程序,加载第三方源造成的。先清理掉第三方源,更新源,然后在安装。
    或者在ubuntu的中直接搜能用的libneo_util包试试
      

  8.   


    编译环境 64位ubuntu, jdk1.6 .
    问一下 怎么搜能用的libneo_util包?
    清理第三方源是指sourcelist里添加的吗?
    谢谢
      

  9.   

    我一直没有勇气在64位系统中尝试各种开发工作,怕的就是库的兼容和完善。
    在新德里软件中心中找找看
    第三方源就是自己手动添加到sourcelist中的源
      

  10.   


    之前在64位系统中编译2.3的版本一直没有问题,这次做一个基于三星v210的pad项目,遇到这么个问题,郁闷。
    之前加了一个163的镜像,不知道是不是这个影响,等周一到公司,试验一下
      

  11.   

    host SharedLib: libneo_cs (out/host/linux-x86/obj/lib/libneo_cs.so)

    这个几个文件分别在\external\clearsilver\cs(cgi,java-jni,util)路径的Andriod.mk有,
    我就是更改:
    # This forces a 64-bit build for Java6
    LOCAL_CFLAGS += -m64
    LOCAL_LDFLAGS += -m64# This forces a 32-bit build for Java6
    #LOCAL_CFLAGS += -m32
    #LOCAL_LDFLAGS += -m32可以了。
      

  12.   

    我这里不行,之前试过改过这几个文件,还是报错如下
    host C: libneo_cgi <= external/clearsilver/cgi/date.c
    host C: libneo_cgi <= external/clearsilver/cgi/rfc2388.c
    host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so)
    /usr/bin/ld: skipping incompatible out/host/linux-x86/obj/lib/libneo_util.so when searching for -lneo_util
    /usr/bin/ld: cannot find -lneo_util
    /usr/bin/ld: skipping incompatible out/host/linux-x86/obj/lib/libneo_cs.so when searching for -lneo_cs
    /usr/bin/ld: cannot find -lneo_cs
    collect2: ld returned 1 exit status
    make: *** [out/host/linux-x86/obj/lib/libneo_cgi.so] Error 1
    tar: /home/jacobin/pad_project/android2.3.4/out/target/product/t34h/system/bin: Cannot open: No such file or directory
    tar: Error is not recoverable: exiting now
      

  13.   

    make clean
    make update-api
    make
      

  14.   


    在make update-api过程中报错 
    --------------------------------
    /usr/bin/ld: skipping incompatible out/host/linux-x86/obj/lib/libneo_util.so when searching for -lneo_util
    /usr/bin/ld: cannot find -lneo_util
    /usr/bin/ld: skipping incompatible out/host/linux-x86/obj/lib/libneo_cs.so when searching for -lneo_cs
    /usr/bin/ld: cannot find -lneo_cs
    collect2: ld returned 1 exit status
    make: *** [out/host/linux-x86/obj/lib/libneo_cgi.so] 错误 1
      

  15.   

    终于解决了,上午改的四个文件中有个笔误,改错了,导致编译不过。
    非常感谢各位大虾..总结,拿到的这套代码之前是在32位机器上进行编译的,所以\external\clearsilver\cs(cgi,java-jni,util)\Android.mk文件里用的32位的选项,但是我用的是64位的机器,从而导致编译出错。
    其实最早编译2.3时,当时没有64位机器,这几个文件都是从64改成32位,才能编译通过,这次反过来,就没有考虑到,看来还是经验不够。