当前位置: 技术问答>linux和unix
有关静态库libc_nonshared.a里__fini_array_end'找不到的问题
来源: 互联网 发布时间:2016-08-28
本文导语: RT,小弟最近在交叉编译DBUS,好不容易把./configure通过了,产生了MAKEFILE文件,没想在make的时候又碰到个问题,错误如下: make[2]: Entering directory `/home/gfs/study/dbus/dbus-1.2.24/bus' CCLD dbus-daemon /opt/crosstool/arm-linux/gcc-3.4.4-glib...
RT,小弟最近在交叉编译DBUS,好不容易把./configure通过了,产生了MAKEFILE文件,没想在make的时候又碰到个问题,错误如下:
网上有人说把makefile里的-Wall选项改为-shared就可以了,我也改了,
改成
整个MAKEFILE就这一句有-Wall的,还是一样的错误..哪里有问题呢,高手指教,郁闷死了..搞了好几天了
make[2]: Entering directory `/home/gfs/study/dbus/dbus-1.2.24/bus'
CCLD dbus-daemon
/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/lib/gcc/arm-linux/3.4.4 /../../../../arm-linux/bin/ld: Warning: gc-sections option ignored
bus.o: In function `process_config_postinit':
/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/lib/gcc/arm-linux/3.4.4 /../../../../arm-linux/lib/libc_nonshared.a(elf-init.oST): In function `__libc_c su_init':
elf-init.c:(.text+0x5c): undefined reference to `__init_array_end'
elf-init.c:(.text+0x60): undefined reference to `__init_array_start'
/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/lib/gcc/arm-linux/3.4.4 /../../../../arm-linux/lib/libc_nonshared.a(elf-init.oST): In function `__libc_c su_fini':
elf-init.c:(.text+0xbc): undefined reference to `__fini_array_end'
elf-init.c:(.text+0xc0): undefined reference to `__fini_array_start'
collect2: ld returned 1 exit status
make[2]: *** [dbus-daemon] Error 1
make[2]: Leaving directory `/home/gfs/study/dbus/dbus-1.2.24/bus'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/gfs/study/dbus/dbus-1.2.24'
make: *** [all] Error 2
网上有人说把makefile里的-Wall选项改为-shared就可以了,我也改了,
CFLAGS = -ffunction-sections -fdata-sections -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wf loat-equal -Wdeclaration-after-statement -fno-common -Wno-unused -Wno-sign-compare -fno-strict-aliasing
改成
CFLAGS = -ffunction-sections -fdata-sections -g -O2 -shared -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wf loat-equal -Wdeclaration-after-statement -fno-common -Wno-unused -Wno-sign-compare -fno-strict-aliasing
整个MAKEFILE就这一句有-Wall的,还是一样的错误..哪里有问题呢,高手指教,郁闷死了..搞了好几天了
|
这是链接时候的错误,不是编译的错误。
你的链接的命令行是什么?
你的链接的命令行是什么?
|
没做过,所以不知道怎么办。帮你分析下啊,一般
undefined reference to `__init_array_end'是缺少库,makefile里加上对应库就行了。至于你说的“makefile里的-Wall选项改为-shared”,肯定是不行的,-Wall是输出警告,-shared 是编译成动态库,不知道为什么这么改。
建议,configure --help 看看有啥设置你弄错了没。还是要等做过的人来帮你。
undefined reference to `__init_array_end'是缺少库,makefile里加上对应库就行了。至于你说的“makefile里的-Wall选项改为-shared”,肯定是不行的,-Wall是输出警告,-shared 是编译成动态库,不知道为什么这么改。
建议,configure --help 看看有啥设置你弄错了没。还是要等做过的人来帮你。
|
试试这几个参数:-Wl,-static -lstdc++ -static-libgc
|
我现在也遇到了这样的问题,纠结了好几天了,都不知道是什么回事,你还解决了?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。