Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos MacPorts GCC编译器,-Wa,-q和;(/opt/local/bin/clang)未安装“;_Macos_Gcc_Assembly_Macports - Fatal编程技术网

Macos MacPorts GCC编译器,-Wa,-q和;(/opt/local/bin/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(活动) 当我尝试使

我安装了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(活动)
当我尝试使用集成汇编程序编译空程序时:

$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