- 主题:怎么生成一个根路径可移动的 GCC 工具链?
在 macOS 上编译生成了一个 GCC 工具链,根目录按下述方式指定
$ ./configure --prefix=/usr/local/gcc-11.2.0
安装完测试了一下,可以工作。想着把 GCC 工具链挪个位置改个名,比如
$ mv /usr/local/gcc-11.2.0 /opt/gcc-11.2-macosx
再用 /opt/gcc-11.2.0-macosx/bin/gcc 编译,成功了,但无法运行。
因为 /opt/gcc-11.2.0-macosx/lib/中的库路径不对,例如
$ otool -L /opt/gcc-11.2.0-macos/lib/libstdc++.dylib
/opt/gcc-11.2.0-macos/lib/libstdc++.dylib:
/usr/local/gcc-11.2.0/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.29.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
/usr/local/gcc-11.2.0/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
想问一下编译 GCC 的选项中哪个对应着修改这些库里的 RPATH?
--
FROM 27.115.42.*
我一般都用静态链接,GCC有--disable-shared这个configure选项。动态链接可能需要查一下相关选项,例如--sysroot这类的。
【 在 easior (潜行) 的大作中提到: 】
: 在 macOS 上编译生成了一个 GCC 工具链,根目录按下述方式指定
: $ ./configure --prefix=/usr/local/gcc-11.2.0
: 安装完测试了一下,可以工作。想着把 GCC 工具链挪个位置改个名,比如
: ...................
--
修改:ArchLinux FROM 223.72.82.*
FROM 223.72.82.*
印象中 MinGW 很特别,装在哪里都能正常链接动态库,而不是静态库;
搜了一下,找到了一篇博客
https://blog.hackpascal.net/2015/10/%E8%AE%B0%E4%B8%80%E6%AC%A1-mingw-w64-%E5%B7%A5%E5%85%B7%E9%93%BE%E7%9A%84%E5%88%B6%E4%BD%9C%E8%BF%87%E7%A8%8B/
从这篇博客的结尾10行瞎猜了一下,MinGW能安装在任意位置都能正确链接,
是因为将--prefix指向了一个虚假的/mingw64,但生成的工具链记住了这个本不存在的 RPATH!
【 在 ArchLinux (a lightweight and flexible distribution) 的大作中提到: 】
: 我一般都用静态链接,GCC有--disable-shared这个configure选项。动态链接可能需要查一下相关选项,例如--sysroot这类的。
--
FROM 183.131.109.*
看另一贴的回复吧,本人只是在 macOS 上干了这个事。
估计MinGW里也差不多。
【 在 hothail (沸冰!无尽的华尔兹) 的大作中提到: 】
: 是不是把/mingw64做ln -s 链接到自己的路径上
: 就可以任意放置了
: - 来自 水木社区APP v3.5.3
: ...................
--
FROM 183.131.109.*
好的,就是看到这个感觉好像受到点启发
【 在 easior 的大作中提到: 】
: 看另一贴的回复吧,本人只是在 macOS 上干了这个事。
: 估计MinGW里也差不多。
:
--
FROM 111.206.87.*
docker 最好
【 在 easior (潜行) 的大作中提到: 】
: 在 macOS 上编译生成了一个 GCC 工具链,根目录按下述方式指定
: $ ./configure --prefix=/usr/local/gcc-11.2.0
: 安装完测试了一下,可以工作。想着把 GCC 工具链挪个位置改个名,比如
: ...................
--
FROM 113.110.224.*