執行 g++ -std=c++11 Course.cpp 報錯,提示未定義 main。
編譯單元非可執行程序:
Course.cpp 僅包含類實現,缺少程序入口 main()。g++ 默認編譯並鏈接生成可執行文件,鏈接階段找不到 main 符號而失敗。
g++ -std=c++11 -c Course.cpp -o Course.o # 僅編譯,不鏈接
# 後續與含 main 的文件鏈接
g++ -std=c++11 main.cpp Course.o -o app
// test_course.cpp
#include "Course.h"
#include
int main() {
Course c("Math");
std::cout << c.getName() << " ID:" << c.getId();
return 0;
}
g++ -std=c++11 Course.cpp test_course.cpp -o test
g++ -std=c++11 -c Course.cpp -o Course.o
ar rcs libcourse.a Course.o # 靜態庫
g++ -shared -o libcourse.so Course.o # 動態庫
# 使用
g++ main.cpp -L. -lcourse -o app
ID 實現自動分配唯一標識read/print 實現流式輸入輸出C++ 編譯鏈接分離是核心概念:.cpp → .o (編譯) → 可執行文件/庫 (鏈接)。無 main 只能產出 .o 或庫。