我有两台装有 Gentoo 的计算机,均采用 AMD64。我尝试构建以下程序:
int main() {tgetent();}
编译的命令是:
gcc -v 1.c -Wl,--as-needed -lncurses
在一台计算机上找不到该函数,而在另一台计算机上却可以找到。没有 --as-needed 标志,它可以正确链接。编译器和 binutils 的版本相同。
以下是第一台和第二台机器上的日志:
使用内置规格。 COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3/gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/lto-wrapper 目标:x86_64-pc-linux-gnu 配置为:/var/tmp/portage/sys-devel/gcc-4.7.3-r1/work/gcc-4.7.3/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.7.3-r1 p1.4, pie-0.5.5' --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --with-multilib-list=m64 --disable-altivec --disable-fixed-point --enable-targets=all --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --enable-lto --without-cloog --without-ppl 线程模型:posix gcc 版本 4.7.3(Gentoo 4.7.3-r1 p1.4,pie-0.5.5) COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -quiet -v 1.c -quiet -dumpbase 1.c -mtune=generic -march=x86-64 -auxbase 1 -version -o /tmp/cckCeNIy.s GNU C(Gentoo 4.7.3-r1 p1.4、pie-0.5.5)版本 4.7.3(x86_64-pc-linux-gnu) 由 GNU C 版本 4.7.3、GMP 版本 5.1.2、MPFR 版本 3.1.2、MPC 版本 1.0.1 编译 GGC 启发式方法:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 忽略不存在的目录“/usr/local/include” 忽略不存在的目录“/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/include” #include“...”搜索从这里开始: #include 搜索从这里开始: /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed /usr/include 搜索列表结束。 GNU C(Gentoo 4.7.3-r1 p1.4、pie-0.5.5)版本 4.7.3(x86_64-pc-linux-gnu) 由 GNU C 版本 4.7.3、GMP 版本 5.1.2、MPFR 版本 3.1.2、MPC 版本 1.0.1 编译 GGC 启发式方法:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 编译器可执行文件校验和:39edf3479a880e47daebbbc3740ccab0 COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/as -v --64 -o /tmp/cckazMHs.o /tmp/cckCeNIy.s GNU 汇编器版本 2.23.2 (x86_64-pc-linux-gnu) 使用 BFD 版本 (GNU Binutils) 2.23.2 COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtbegin.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../.. /tmp/cckazMHs.o --as-needed -lncurses -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtend.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crtn.o
使用内置规格。 COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3/gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/lto-wrapper 目标:x86_64-pc-linux-gnu 配置为:/home_old/tmp/portage/sys-devel/gcc-4.7.3-r1/work/gcc-4.7.3/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.7.3/python --enable-languages=c,c++ --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.7.3-r1 p1.4, pie-0.5.5' --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-altivec --disable-fixed-point --enable-targets=all --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --disable-libquadmath --enable-lto --without-cloog --without-ppl 线程模型:posix gcc 版本 4.7.3(Gentoo 4.7.3-r1 p1.4,pie-0.5.5) COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -quiet -v 1.c -quiet -dumpbase 1.c -mtune=generic -march=x86-64 -auxbase 1 -version -o /tmp/cc830JX6.s GNU C(Gentoo 4.7.3-r1 p1.4、pie-0.5.5)版本 4.7.3(x86_64-pc-linux-gnu) 由 GNU C 版本 4.7.3、GMP 版本 5.1.2、MPFR 版本 3.1.2、MPC 版本 1.0.1 编译 GGC 启发式方法:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 忽略不存在的目录“/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/include” #include“...”搜索从这里开始: #include 搜索从这里开始: /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include /usr/local/包含 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed /usr/include 搜索列表结束。 GNU C(Gentoo 4.7.3-r1 p1.4、pie-0.5.5)版本 4.7.3(x86_64-pc-linux-gnu) 由 GNU C 版本 4.7.3、GMP 版本 5.1.2、MPFR 版本 3.1.2、MPC 版本 1.0.1 编译 GGC 启发式方法:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 编译器可执行文件校验和:d486e53a9a5b8aa6182027c91a2ba0e6 COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/as -v --64 -o /tmp/ccl4EIq9.o /tmp/cc830JX6.s GNU 汇编器版本 2.23.2 (x86_64-pc-linux-gnu) 使用 BFD 版本 (GNU Binutils) 2.23.2 COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS ='-v''-mtune = generic''-march = x86-64' /usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtbegin.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../.. /tmp/ccl4EIq9.o --as-needed -lncurses -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/crtend.o /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/crtn.o /tmp/ccl4EIq9.o: 在函数“main”中: 1.c:(.text+0xa): 对‘tgetent’未定义引用 collect2:错误:ld 返回 1 退出状态
可能是什么问题呢?