g ++忽略头文件

时间:2012-06-27 02:37:59

标签: c++ macos g++

所以我试图用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中我遇到了问题。

2 个答案:

答案 0 :(得分:1)

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

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

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

  • 如果您要为不同的平台构建,则问题可能是某些特定于平台的代码。
  • 编译器不兼容:假设您使用的是带有LLVM的Xcode,您可能会使用一些与LLVM一起使用但与gcc不同的代码。非常不可能(根据我对这些编译器的经验,我可以说它们非常兼容),但仍然可能。

答案 1 :(得分:0)

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

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