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

Posted

技术标签:

【中文标题】在 Linux 上运行 C++ 可执行文件【英文标题】:Run C++ executable on Linux 【发布时间】:2016-02-08 17:15:24 【问题描述】:

我正在尝试使用 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

怎么了?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于在 Linux 上运行 C++ 可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

linux C++可执行文件运行后,为什么无法被替换?(Text file busy)“文件被锁定”(File Locking)“文件占用”(File In Use)

如何通过 Makefile 将 cap_net_raw 功能添加到 Linux 上的 c++ 可执行文件

Linux下制作bin可执行文件

Eclipse 可执行架构类型

(四)在安卓上运行Tensorflow C++可执行文件

理解Unix可执行文件