Macos MacPorts GCC编译器,-Wa,-q和;(/opt/local/bin/clang)未安装“;
我安装了MacPorts GCC编译器,并为集成汇编程序安装了MacPorts Clang:Macos MacPorts GCC编译器,-Wa,-q和;(/opt/local/bin/clang)未安装“;,macos,gcc,assembly,macports,Macos,Gcc,Assembly,Macports,我安装了MacPorts GCC编译器,并为集成汇编程序安装了MacPorts Clang: $port installed | egrep-i'(gcc | g\+\+\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ clang-3.8@3.8-r262722_1+分析仪(有源) 叮当声选择@1.0_0(活动) gcc49@4.9.3_0(活动) gcc_select@0.1_8(活动) libgcc@6.1.0_0(活动) 当我尝试使
$port installed | egrep-i'(gcc | g\+\+\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
clang-3.8@3.8-r262722_1+分析仪(有源)
叮当声选择@1.0_0(活动)
gcc49@4.9.3_0(活动)
gcc_select@0.1_8(活动)
libgcc@6.1.0_0(活动)
当我尝试使用集成汇编程序编译空程序时:
$cat test.cc
int main(int argc,char*argv[])
{
返回argc;
}
它会导致一个错误:
$/opt/local//bin/gcc-mp-4.9-Wa,-q-march=native test.cc-o test.exe
/opt/local/bin/as:未安装汇编程序(/opt/local/bin/clang)
以及:
使用集成汇编程序似乎不仅仅是一个问题。如果我省略了-Wa,-q
,那么实际程序会遇到类似的故障
如何告诉GCC编译器使用安装的Clang中的集成汇编程序?例如,clang++-Wa,-q-Wa,as=/opt/local/bin/clang-mp-3.8
或者,在版本号重要的地方,这些东西是否需要成对安装?例如,GCC 4.9(2016年1月)需要Clang 3.7(2016年1月)
或者,MacPorts通常在/opt/local/bin/clang
中放置什么编译器?例如,Clang 3.5通常位于/opt/local/bin/Clang
为了完整起见,这款MacBook有MacPorts,但它不在正轨上。我使用MBP进行OS X测试,第二个角色是(即将)MacPorts测试。然而,为了避免影响OS X测试,我没有将MacPorts放在path上。我很确定这些版本不需要匹配。但我担心Macports必须在这条路上才能运行。更重要的是,我担心您必须“选择端口”gcc 以下是我的设置:
$ port select --list clang
Available versions for clang:
apple-clang (active)
mp-clang-3.7
none
uri-clang
$ ll /opt/local/bin/clang
lrwxr-xr-x 1 root admin 14 Jan 21 2015 /opt/local/bin/clang@ -> /usr/bin/clang
$ port select --list gcc
Available versions for gcc:
apple-gcc
mp-gcc6 (active)
none
$ ll /opt/local/bin/gcc
lrwxr-xr-x 1 root admin 23 May 6 17:13 /opt/local/bin/gcc@ -> /opt/local/bin/gcc-mp-6
$ file /opt/local/bin/as
/opt/local/bin/as: Mach-O 64-bit executable x86_64
$ port provides /opt/local/bin/as
/opt/local/bin/as is provided by: cctools
$ $ port dependents cctools
gcc6 depends on cctools
libgcc depends on cctools
$
尝试将/usr/bin/clang符号链接到/opt/local/bin/clang(与/usr/bin/clang++相同),看看是否有帮助。并确保安装了cctools端口(尽管我无法想象它不存在,因为gcc或clang都依赖于它)
另外,“-Wa,-q”是告诉GCC使用本机汇编程序的一种方式(至少从Xcode-6和GCC-4.8开始,它就一直在为我工作)。我很确定这些版本不需要匹配。但我担心Macports必须在这条路上才能运行。更重要的是,我担心您必须“选择端口”gcc 以下是我的设置:
$ port select --list clang
Available versions for clang:
apple-clang (active)
mp-clang-3.7
none
uri-clang
$ ll /opt/local/bin/clang
lrwxr-xr-x 1 root admin 14 Jan 21 2015 /opt/local/bin/clang@ -> /usr/bin/clang
$ port select --list gcc
Available versions for gcc:
apple-gcc
mp-gcc6 (active)
none
$ ll /opt/local/bin/gcc
lrwxr-xr-x 1 root admin 23 May 6 17:13 /opt/local/bin/gcc@ -> /opt/local/bin/gcc-mp-6
$ file /opt/local/bin/as
/opt/local/bin/as: Mach-O 64-bit executable x86_64
$ port provides /opt/local/bin/as
/opt/local/bin/as is provided by: cctools
$ $ port dependents cctools
gcc6 depends on cctools
libgcc depends on cctools
$
尝试将/usr/bin/clang符号链接到/opt/local/bin/clang(与/usr/bin/clang++相同),看看是否有帮助。并确保安装了cctools端口(尽管我无法想象它不存在,因为gcc或clang都依赖于它)
另外,“-Wa,-q”是告诉GCC使用本机汇编程序的一种方式(至少从Xcode-6和GCC-4.8开始它一直在为我工作)。您只需执行
sudo port select clang mp-clang-3.8
。我不喜欢这样,因为它在简单调用clang
时将此设置为默认设置(当然,只有在MacPorts位于路径上时)
我最后做的是用以下简单脚本替换/opt/local/bin/as
:
#!/bin/sh
clang -c -x assembler $@ -
然后我不使用
-Wa,-q
参数来gcc
您只需执行sudo端口选择clang mp-clang-3.8
。我不喜欢这样,因为它在简单调用clang
时将此设置为默认设置(当然,只有在MacPorts位于路径上时)
我最后做的是用以下简单脚本替换/opt/local/bin/as
:
#!/bin/sh
clang -c -x assembler $@ -
然后我不使用
-Wa,-q
参数来gcc
为了切换到clang集成汇编程序,不需要弄乱编译器选项(-Wa,-q)。正如我所解释的,设置AS_INTEGRATED_ASSEMBLER环境变量也会触发相同的行为。切换到clang INTEGRATED ASSEMBLER时,不需要弄乱编译器选项(-Wa,-q)。正如我所解释的,设置AS_INTEGRATED_ASSEMBLER环境变量也会触发相同的行为。但是您可以为一个测试设置路径,然后为下一个测试更改路径?唉,我没有。有人可能会猜测,如果port
可执行文件驻留在/opt/local/bin
中,那么可能/opt/local
就是您的Macports安装目录。但这可能不是万无一失的-(但您可以为一个测试设置路径,然后为下一个测试更改路径?唉,我不知道。人们可能会猜测,如果端口
可执行文件驻留在/opt/local/bin
中,那么/opt/local
可能是您的Macports安装目录。但这可能不是傻瓜式的。)-(哦,好主意。我的下一个想法是我不想避免-Wa,-q
,因为我们想测试它。我们在“MacPorts/GCC with Clang/Assembler”中有用户配置,以及我们最近做的。那么,我们可以使用您的聪明的hack并使用-Wa,-q
?当然可以。您可以执行sudo端口选择clang mp-clang-3.8
,并用脚本替换/opt/local/bin/as
。如果您传递-Wa,-q
,那么gcc
将直接调用clang汇编器,没有它将调用as
,它指的是clang
。该脚本可以让您更好地控制调用clang
,不过,例如,您可以显式地放置/usr/bin/clang
。另外,供您参考,有一个更奇特的脚本可以代替作为。但是上面的简单版本为我做了这一点。哦,好主意。我的下一个想法是,我不需要nt以避免-Wa,-q
,因为我们想测试它。我们在“MacPorts/GCC with Clang/Assembler”中有用户配置,我们最近也做了。那么,我们可以使用您的聪明的hack并使用-Wa,-q
?当然可以。您可以使用sudo端口选择clang mp-clang-3.8
并用脚本替换/opt/local/bin/as
。如果您传递-Wa,-q
,那么gcc
将