2

我有一个 hello world cpp 文件。如果我通过编译它c++ test.cpp -o test得到可执行的“测试”文件(-rwxr-xr-x),如果我执行它,它会被执行并生成预期的结果。

但是,如果我使用${CXX} -std=c++0x -I${INCLUDE_DIR1} -c test.cpp -o test -L{LIB_DIR1} -llib_name我也会得到“测试”文件,但在这种情况下它是不可执行的。所以,我无法执行它。我尝试过chmod +x,它获得了执行权限,但是如果我尝试执行它,则会收到一条错误消息(无法执行)。

我做错了什么以及如何纠正?

4

2 回答 2

21

-c告诉编译器不要生成可执行文件(这意味着“仅编译”)。它只创建一个适合链接到可执行文件(可能与其他目标文件和库)的目标文件。

-c如果您想要一个可执行文件,请删除该开关。

有关完整编译过程的更多详细信息,请参阅: 编译/链接过程如何工作?

于 2013-03-18T14:48:03.000 回答
2
于 2013-03-18T16:30:09.327 回答