用clang / llvm构建wget

时间:2018-07-30 19:41:41

标签: optimization clang

我下载了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上运行它。我想念什么?

1 个答案:

答案 0 :(得分:1)

您还需要指定要使用的特定ar实用程序-默认的arranlib产生.a个文件,这些文件无法链接(无条目可使用),所以对我来说这可行:

./configure CC=clang-4.0 CFLAGS=-flto AR=llvm-ar-4.0 RANLIB=llvm-ranlib-4.0

您可能只使用llvm-ar,而没有版本后缀,但是您需要确保clangarranlib的版本匹配,否则您会发现遇到其他错误。