我下载了wget的源文件,并尝试使用Clang进行编译。我要配置链接时间优化(-flto
)。起初,我只是尝试:
./configure CC=clang CFLAGS=-flto
make
配置成功,但是我无法运行make哪个输出:
/tmp/lto-llvm-4f0f02.o:ld-temp.o:function _do_handshake:error:undefined reference to'rpl_fcntl'
和其他许多类似的错误,都具有相同的格式(错误:对xxx的未定义引用)。
所以我认为我需要正确地链接文件。搜索答案后,我然后尝试了以下所有命令:
./configure CC=clang CFLAGS=-flto LDFLAGS=-flto
make
-----------------------------------------------
./configure CC=clang CFLAGS=-flto LDFLAGS="-fuse-ld=lld-4.0"
make
-----------------------------------------------
./configure CC=clang CFLAGS=-flto LDFLAGS="-fuse-ld=gold"
make
但是我仍然遇到相同的错误。
我正在Debian-9.5上运行它。我想念什么?
答案 0 :(得分:1)
您还需要指定要使用的特定ar实用程序-默认的ar
和ranlib
产生.a
个文件,这些文件无法链接(无条目可使用),所以对我来说这可行:
./configure CC=clang-4.0 CFLAGS=-flto AR=llvm-ar-4.0 RANLIB=llvm-ranlib-4.0
您可能只使用llvm-ar
,而没有版本后缀,但是您需要确保clang
,ar
和ranlib
的版本匹配,否则您会发现遇到其他错误。