簡體   English   中英

如何在Linux中編譯一個c++程序?

[英]How to compile a c++ program in Linux?

我制作了一個文件 hi.cpp 並編寫了下面給出的命令:

#include <iostream>
using namespace std;
int main ()
{
  cout << "Hello World! ";
  cout << "I'm a C++ program";
  return 0;
}

然后我使用以下命令在我的 RHEL 6 機器上運行它

gcc hi.cpp

我得到了一些錯誤,如下所示:

[chankey@localhost ~]$ gcc hi.cpp
/tmp/cc32bnmR.o: In function `main':
hi.cpp:(.text+0xa): undefined reference to `std::cout'
hi.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, const char*)'
hi.cpp:(.text+0x19): undefined reference to `std::cout'
hi.cpp:(.text+0x1e): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, const char*)'
/tmp/cc32bnmR.o: In function `__static_initialization_and_destruction_0(int, int)':
hi.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::Init()'
hi.cpp:(.text+0x51): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cc32bnmR.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
[chankey@localhost ~]$ 

這些錯誤代表什么? 我的代碼是正確的,那為什么我會出錯?

使用 g++

g++ -o hi hi.cpp

g++ is for C++, gcc is for C although with the -libstdc++ you can compile c++ most people don't do this.

正如其他答案所說,使用g++而不是gcc

或使用 make: make hi

您必須使用 g++ (如其他答案中所述)。 最重要的是,您可以考慮在命令行中提供一些不錯的選項(這有助於您避免編寫格式錯誤的代碼):

g++   -O4    -Wall hi.cpp -o hi.out
     ^^^^^   ^^^^^^
  optimize  related to coding mistakes

更多細節可以參考man g++ | less man g++ | less

嘗試這個:

g++ -o hi hi.cpp

gcc 僅適用於 C

$ g++ 1st.cpp -o 1st

$./1st

如果您發現任何錯誤,請首先使用以下代碼安裝 g++

$ sudo apt-get install g++

然后安裝 g++ 並使用上面的運行代碼

g++ -o foo foo.cpp

g++ --> cc1plus 編譯器驅動

-o --> 表示output文件(這里的foo是output文件的名字,可以是任意名字)

foo.cpp --> 要編譯的源文件

執行編譯的文件,只需鍵入

./foo
  1. 要編譯您的 C++ 代碼,請使用:-

g++ 文件名.cpp -o 可執行文件名

(i) -o 選項用於顯示代碼中的錯誤 (ii) 如果 code_file 中沒有錯誤,那么它將生成一個可執行文件。

  1. 現在執行生成的可執行文件:

./executable_file_name

對於簡單的測試項目, g++make Standalone 是很好的選擇,因為已經回答:

g++ -o hi hi.cpp

或者

make hi

但是,對於實際項目,需要使用項目經理。 在我寫這個答案時,最常用和開源的是cmake (替代方案可能是 QT qmake )。

以下是一個簡單的 CMake 示例:

確保在yum install cmake分發版上apt-get install cmake cmake

與您的源hi.cpp一起創建一個文件CMakeLists.txt (名稱很重要)

project("hi")

add_executable( hi hi.cpp )

然后編譯並運行為:

cmake .
make
./hi

這允許項目使用庫、源等輕松擴展 它還使大多數 IDE 能夠正確理解項目(大多數 IDE 原生接受 CMake,如 kdevelop、qtCreator 等。)

CMake 與 Qt-Creator 集成的示例

您還可以從 CMake 生成 Visual-Studio 或 XCode 項目,以防您決定將來將該軟件移植到其他平台。

cmake -G Xcode . #will generate `hi.xcodeproj` you can load on macOS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM