尝试了一个之前能链接通过的代码,用新版 gcc 链接后报了错
relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
然后重新用 yasm 的-DPIC
编译之后,再链接,也不行。。。gcc 会自动链接标准库,所以没用 ld。我在官网看了,两版的 gcc 差别就是
@@ -81,7 +81,9 @@ build() {
--enable-gnu-indirect-function \
--disable-multilib \
--disable-werror \
- --enable-checking=release
+ --enable-checking=release \
+ --enable-default-pie \
+ --enable-default-ssp
该怎么解决啊。。。
Update: 试了一下,clang 也有问题,是 ld 返回的错误。。。binutils 就多了一行
+ --enable-relro \
1
15015613 2017-07-14 08:31:46 +08:00 via Android
先降级,过两天等新的 gcc 出来了,再升上去看看,也许问题就解决了
|
3
chih758 2017-07-14 08:58:53 +08:00 via Android
aur 里有各种版本的 gcc
|
4
wsy2220 2017-07-14 19:11:21 +08:00
应该是--enable-default-pie 导致的,之前加上这个配置选项会没法编内核
|