我想配置一个自动化项目来调用非标准项目
链接器(gold
linker),
使用Linux Mint 16 / Ubuntu 13.10的股票autotools
我相信我会通过以下方式实现这一目标:
libtoolize
- 项目./configure LD=/path/to/my/linker ... etc.
然而这是无效的。 libtoolize
取得了成功。后
标准./configure; make
我现在看到libtool
正在做
联:
/bin/bash ./libtool --tag=CXX --mode=link g++ -g -O2 -o helloworld helloworld.o
但将LD=/path/to/my/linker
传递给configure
没有任何区别。实验上,
我甚至跑了:
./configure LD=/does/not/exist
期待引发错误,但我没有。输出包含:
checking if the linker (/does/not/exist -m elf_x86_64) is GNU ld... no
checking whether the g++ linker (/does/not/exist -m elf_x86_64) supports shared libraries... yes
此后,make继续成功地链接,与之前完全一样地调用g++
。
配置非标准链接器的正确方法是什么?
答案 0 :(得分:4)
但是将LD = / path /传递给/ my / linker来配置没有区别
这是因为LD
几乎从不使用,几乎不会用于链接任何用户空间程序。通过使用适当的编译器驱动程序(gcc
,g++
等)来执行正确的链接。
配置非标准链接器的正确方法是什么?
如果您有/some/path/ld
并希望gcc
使用ld
,请将-B/some/path
标记传递给gcc。
然后你可能想要:
./configure CC='gcc -B/some/path' CXX='g++ -B/some/path' ...