我正在使用mac osx yosemite,xcode 6.1.1。 我写了这段简单的代码。当我编译并使用gcc链接它时,我不断收到错误: 找不到架构x86_64的符号
但是相同的代码在xcode中成功编译,或者使用g ++,clang ++编译。我想知道有什么区别? 该项目是一个包含以下内容的文件:
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <stdio.h>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
int main(int argc, char** argv){
vector<ListNode *> vec;
vec.push_back(new ListNode(0));
vec.push_back(new ListNode(1));
cout<<vec[0]->val<<vec[1]->val<<endl;
return 0;
}
答案 0 :(得分:2)
如果使用g ++链接目标文件,它会自动链接到std C ++库(gcc不会这样做)。这就是为什么xcode,g ++和clang ++会编译你的代码但是gcc会抛出错误。
GCC:GNU编译器集合
- 指GNU编译器支持的所有不同语言。gcc:GNU C编译器
g ++:GNU C ++编译器
gcc
和g++
之间的主要区别:
*.c/*.cpp
个文件作为C和C ++。*.c/*.cpp
和g ++编译*.cpp
文件有一些额外的宏。