运行 Linux 上的 C++ 可执行文件

Run C++ executable on Linux

我正在尝试使用 OpenCV 在 Linux 中编译并执行 C++ 程序。

当我打字时

g++ -c facedetection.cpp -std=c++11 -o facedetection

facedetection 文件已正确生成。请注意,我使用 -std=c++11 是因为我有一个错误建议这样做。

完成 chmod o+x facedetection 后,我尝试使用 ./facedetection 执行它,但出现错误:

bash: ./facedetection: cannot execute binary file: Exec format error

怎么了?

当您使用 -c 编译时,它会生成一个对象 (.o) 文件,而不是可执行文件。您需要在没有 -c 的情况下编译它才能生成可执行文件。

较大的 C++ 程序将有多个 .cpp 文件;对于每个 .cpp 文件,您将使用 -c 进行编译以生成它们各自的 .o 文件。然后你会 link 这些 .o 文件(运行 g++ 没有 -c)来生成最终的可执行文件。