2

我是 Linux 编程(Ubuntu 服务器)的新手。

指令之间有什么区别:

c++ -c  main.cpp -o main.o -lstdc++
c++ -c  Console.cpp -o Console.o -lstdc++
c++ main.o Console.o -o App1

和这个:

g++ -c  main.cpp -o main.o -lstdc++
g++ -c  Console.cpp -o Console.o -lstdc++
g++ main.o Console.o -o App1

这些说明是否相同?c++ 指令是否为 g++ 提供了另一个名称?

4

8 回答 8

4

update-alternatives --display c++

于 2012-10-24T08:54:30.590 回答
3

是的,默认是 g++。您可以使用update-alternatives --display c++; 通过改变它sudo update-alternatives c++

update-alternatives --config c++
There are 2 choices for the alternative c++ (providing /usr/bin/c++).

  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++       20        auto mode
  1            /usr/bin/clang++   10        manual mode
  2            /usr/bin/g++       20        manual mode
于 2012-10-24T08:56:23.810 回答
2

他们都使用我相信的 GNU C++ 编译器。所以是的,它们是一样的。

于 2012-10-24T08:52:53.160 回答
2

他们可能是一样的。您可以明确检查:

哪个 c++

/usr/bin/c++

ls -l /usr/bin/c++

/etc/alternatives/c++

ls -l etc/alternatives/c++

/usr/bin/g++

于 2012-10-24T08:56:39.530 回答
1

是的,它们是一样的,输入

which c++

给你c++的其实是/usr/bin/c++。然后输入

ll /usr/bin/c++

会给你

lrwxrwxrwx 1 root root 21 Sep  4 17:00 /usr/bin/c++ -> /etc/alternatives/c++*

然后

ll /etc/alternatives/c++

会给你

lrwxrwxrwx 1 root root 12 Sep  4 17:00 /etc/alternatives/c++ -> /usr/bin/g++*

所以是的,它们是相同的(从 c++ 到 g++ 有一个符号链接)。

于 2012-10-24T08:55:13.960 回答
1

只为自己寻找:

$ ls -l /usr/bin/c++ /usr/bin/g++ /etc/alternatives/c++

lrwxrwxrwx 1 root root 12 Jun 2 19:41 /etc/alternatives/c++ -> /usr/bin/g++*
lrwxrwxrwx 1 root root 21 Jun 2 19:41 /usr/bin/c++ -> /etc/alternatives/c++*
lrwxrwxrwx 1 根 7 月 13 日 2012 /usr/bin/g++ -> g++-4.6*

或者做:

$ c++ -v

对比

$ g++ -v
于 2012-10-24T08:56:17.523 回答
1

g++表示 GNU C++ 编译器。

c++表示非特定的 C++ 编译器,但它必须链接到特定的编译器。如果在您的情况下,这只是指向 GNU C++ 编译器的符号链接,那么没有区别。但是,您可以使符号链接指向不同的 C++ 编译器。

于 2012-10-24T09:40:55.137 回答
1

是的。

以下是如何弄清楚这些类型的事情

要查找可执行文件的路径:

which c++

要检查它是文件还是符号链接:

ls -ald `which c++`

要检查它是什么类型的文件:

file `which c++`

要获得可用于将其与其他文件进行比较的校验和:

md5sum `which c++`

这是检查 c++ 和 g++ 是否相等的一种方法:

[ `md5sum $(which c++) | cut -d' ' -f1` == `md5sum $(which g++) | cut -d' ' -f1` ] && echo Yes, equal content || echo No, unequal content
于 2012-10-24T09:44:57.877 回答