【发布时间】:2015-07-20 01:17:55
【问题描述】:
你能(合理地)将 Fedora 21 带到它只有 llvm/clang/libc++/libc++abi 的地方吗? (我发现一些东西表明没有,但它们都大约 3 岁,从那时起 llvm/clang 已经走了很长一段路。)
全新安装,我试过了
yum install gcc gcc-c++
(downloaded, built, installed llvm/cfe(clang)/compiler-rt/libcxx/libcxxabi from svn)
yum remove gcc gcc-c++
added to /etc/profile: export CC=/usr/local/bin/clang \ export CXX=/usr/local/bin/clang++
(in case of hard wiring)
ln -s /usr/local/bin/clang /usr/local/bin/gcc
ln -s /usr/local/bin/clang /usr/local/bin/cc
ln -s /usr/local/bin/clang++ /usr/local/bin/g++
ln -s /usr/local/bin/clang++ /usr/local/bin/c++
ldconfig
我很高兴,然后去构建一些东西,我得到了:
ld: cannot find crtbegin.o
ld: cannot find -lgcc
ld: cannot find -lgcc_s
clang -v 包含
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.9.2
ldconfig && ldconfig -p | grep libgcc 确实显示
libgcc_s.so.1 (libc6,x86-64) => /lib64/libgcc_s.so.1
而 /lib64 是 /usr/lib64 的符号链接。而且,/usr/lib64/libgcc_s.so.1 是指向 /usr/lib64/libgcc_s-4.9.2-20150212.so.1 的符号链接,它以真实文件(92816 字节)的形式存在。
所以,我不明白 ld 在 -lgcc_s 上的问题是什么。 crtbegin 无处可寻,gcc (no_s) 无处可寻。
yum install libgcc 说已经安装并且是最新版本,没关系。
由于我已经安装了 clang 源构建,我可以重新构建 clang,这次使用 clang 而不是 gcc,以摆脱依赖关系? (也许“候选 GCC 安装”位会消失。)
我可以强制 -stdlib=c++ 和 -lc++abi 为默认值,或者至少在没有 gcc 的情况下安装 libc++ 和 libc++abi 吗?
【问题讨论】:
-
ELLCC (ellcc.org) 是一个预打包的工具链,包括 clang/LLVM libc++、libc++abi、musl 和 compiler-rt(用于替换 libgcc)。二进制文件可用于 Fedora。它可能不适合您的需求,因为目前它只支持静态链接。
标签: gcc g++ clang llvm fedora-21