在Solaris 11.3(Sparc)下让gcc调用GNU as/ld的方法求助
在Solaris 11.3上让GCC调用指定的GNU as和ld(无需重新编译GCC)
针对你构建libffi-3.4.5时遇到的GCC不识别AS/LD环境变量的问题,这里有几个可靠的解决方法:
1. 直接通过GCC命令行参数指定工具路径
这是最直接且通用的方式,适用于所有GCC版本:
- 使用
-B选项统一指定工具目录:该选项会让GCC优先从指定目录查找as、ld等辅助工具,无需单独指定每个工具:gcc -B/usr/gnu/bin/ your_source_files.c -o output_binary - 单独指定汇编器和链接器:如果需要更精细的控制,可以分别指定:
- 指定GNU汇编器:添加
-Wa,--as-path=/usr/gnu/bin/as参数 - 指定GNU链接器:添加
-fuse-ld=/usr/gnu/bin/ld参数
示例命令:
gcc -Wa,--as-path=/usr/gnu/bin/as -fuse-ld=/usr/gnu/bin/ld your_source_files.c -o output_binary - 指定GNU汇编器:添加
2. 针对libffi构建过程配置参数
因为你是在构建libffi,可通过configure脚本传递带参数的GCC命令:
- 直接在configure命令中指定CC变量:
CC="gcc -B/usr/gnu/bin/" ./configure --prefix=/your/preferred/install/path - 或者先设置CC环境变量再运行configure:
配置完成后直接执行export CC="gcc -Wa,--as-path=/usr/gnu/bin/as -fuse-ld=/usr/gnu/bin/ld" ./configure --prefix=/your/preferred/install/pathmake和make install即可,整个构建过程会自动使用指定的GNU工具。
3. 关于AS/LD环境变量被忽略的原因
GCC本身默认不会读取AS和LD环境变量来替换内置的工具路径,这些变量通常被make等构建系统使用,而非GCC直接识别,所以直接设置这两个环境变量无法生效。
内容的提问来源于stack exchange,提问作者retired
相关产品推荐
相关产品推荐

