0

所以我正在尝试用 g++ 创建一个 exec。我的命令如下:

g++ -o project21  main.cpp tools.hpp file.hpp FileInfo.cpp file.cp tools.cpp 

我收到一个错误

ld: warning: ignoring file tools.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: ignoring file file.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)

这里的行为很奇怪,我可以在 XCode 中编译它并使用 exec 就好了,它只是在我遇到问题的 shell 中。

4

2 回答 2

1

您不需要编译 hpp 文件。将它们包含在您的 .cpp 文件中。

即使您在项目中包含 hpp,Xcode 也不会编译它们,除非您明确要求它(我的 mac 正在工作,但如果我记得单击项目(左侧树的根),单击目标并检查选项卡构建阶段,有一个包含要编译的文件的列表)。

关于分段错误,如果它缺少源文件(即,您在 .hpp 文件中添加了确实应该在 .cpp 文件中的代码),那么您将收到链接错误,而不是分段错误。分段错误还有其他原因,在 GDB 上运行并调试它(使用 -g 编译以便能够调试)。以下是一些可能性:

  • 如果您正在为不同的平台构建,问题可能是某些平台特定的代码。
  • 编译器不兼容:假设您将 Xcode 与 LLVM 一起使用,您可能有一些代码可以与 LLVM 一起使用,但与 gcc 的行为不同。非常不可能(根据我对这些编译器的经验,我可以说它们非常兼容),但仍然可能。
于 2012-06-27T04:15:10.633 回答
0

在尝试您的命令之前,请尝试删除任何*.gch可能由 Xcode 构建创建的文件。g++

但是,一般来说,我会尝试在不先预编译头文件的情况下让事情正常工作,然后在必要时添加预编译的头优化(即,不要将.hpp文件显式传递给编译器,直到你得到其他一切工作,只有当你真的需要时)。

于 2012-06-27T03:42:34.527 回答