[英]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
g++ 文件名.cpp -o 可執行文件名
(i) -o 選項用於顯示代碼中的錯誤 (ii) 如果 code_file 中沒有錯誤,那么它將生成一個可執行文件。
./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 生成 Visual-Studio 或 XCode 項目,以防您決定將來將該軟件移植到其他平台。
cmake -G Xcode . #will generate `hi.xcodeproj` you can load on macOS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.