V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
linux40
V2EX  ›  Linux

Archlinux 新编译的 gcc 不能和 yasm 一起玩了?

  •  
  •   linux40 · 2017-07-14 08:22:10 +08:00 · 2259 次点击
    这是一个创建于 2449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试了一个之前能链接通过的代码,用新版 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 \
    
    5 条回复    2017-07-15 08:55:52 +08:00
    15015613
        1
    15015613  
       2017-07-14 08:31:46 +08:00 via Android
    先降级,过两天等新的 gcc 出来了,再升上去看看,也许问题就解决了
    linux40
        2
    linux40  
    OP
       2017-07-14 08:38:04 +08:00
    @15015613 挺麻烦的,gcc、clang、库都要回滚。。。
    chih758
        3
    chih758  
       2017-07-14 08:58:53 +08:00 via Android
    aur 里有各种版本的 gcc
    wsy2220
        4
    wsy2220  
       2017-07-14 19:11:21 +08:00
    应该是--enable-default-pie 导致的,之前加上这个配置选项会没法编内核
    linux40
        5
    linux40  
    OP
       2017-07-15 08:55:52 +08:00 via Android
    @wsy2220 那怎么解决的呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3533 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:47 · PVG 18:47 · LAX 03:47 · JFK 06:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.