在Mac mojave上安装的gcc和g ++无法正常工作(简单安装)

问题描述 投票:0回答:1

我在Mac OS mojave上通过brew安装了gcc,但gcc和g ++均无法正常工作。

我尝试通过g ++在简单代码下进行编译,但收到错误消息。

默认情况下,可以使用clang正确编译该程序,所以我想知道是否有任何库链接错误。但我不确定。

在gcc的情况下,我遇到了同样的错误。

#include <iostream>
using namespace std;

int main(){
    int i;
    cin >> i;
    cout << i * 2 + 1 << endl;
} 

ld:警告:忽略文件/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libSystem.tbd,文件是为不支持的文件格式构建的(0x2D 0x2D 0x2D 0x20 0x210x74 0x61 0x70 0x69 0x2D 0x74 0x62 0x64 0x2D 0x76 0x33)链接的架构(x86_64):/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libSystem.tbd架构x86_64的未定义符号:“ ___ cxa_atexit”,引用自:ccEBCemd.o ld中的__static_initialization_and_destruction_0(int,int):对于架构x86_64 collect2找不到符号:错误:ld返回1退出状态

g ++ -v说

使用内置规格。COLLECT_GCC = g ++COLLECT_LTO_WRAPPER = / usr / local / Cellar / gcc / 9.2.0_1 / libexec / gcc / x86_64-apple-darwin18 / 9.2.0 / lto-wrapper目标:x86_64-apple-darwin18配置为:../configure --build = x86_64-apple-darwin18 --prefix = / usr / local / Cellar / gcc / 9.2.0_1 --libdir = / usr / local / Cellar / gcc / 9.2.0_1 / lib / gcc / 9 --disable-nls --enable-checking = release --enable-languages = c,c ++,objc,obj-c ++,fortran --program-suffix = -9 --with-gmp = / usr /本地/ opt / gmp --with-mpfr = / usr / local / opt / mpfr --with-mpc = / usr / local / opt / libmpc --with-isl = / usr / local / opt / isl --with -system-zlib --with-pkgversion ='Homebrew GCC 9.2.0_1'--with-bugurl =https://github.com/Homebrew/homebrew-core/issues--disable-multilib --with-native-system-header-dir = / usr / include --with -sysroot = /库/开发人员/CommandLineTools/SDKs/MacOSX.sdk螺纹型号:posixgcc版本9.2.0(自制的GCC 9.2.0_1)`

谢谢。

c++ gcc g++ homebrew
1个回答
0
投票

总而言之,通过更新Xcode解决了该错误。谢谢您的帮助。

[正如您评论的,我试图g++ --sysroot=/ -o test test.cpp,然后出现了新错误,例如

严重错误:wchar.h:没有这样的文件或目录#包括^ ~~~~~~~~~

[我也尝试编译仅具有int main(){}而没有任何库的代码。然后成功了。

由此,我了解到标准库中存在一个相关问题。有时会在Can't compile C program on a Mac after upgrade to Mojave上讨论过此问题。

无论如何,解决此类问题的方法似乎是更新或重新安装Xcode或gcc。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.