我正在尝试使用premake4 helloworld c ++
但是在使用premake创建makefile后,在使用release config调用make时会出错。 (我在osx 10.9.4上使用clang)
调用make config=release
会产生:
ld: internal error: atom not found in symbolIndex(...
如果我在发布标志中添加“Symbols”标志,一切正常。 但这当然会创建调试符号。
premake4.lua:
solution "cpp_hello_world"
configurations { "Debug", "Release"}
project "cpp_hello_world.out"
kind "ConsoleApp"
language "C++"
files { "**.cpp" }
buildoptions { "-std=c++1y" }
configuration "Debug"
defines { "DEBUG" }
flags { "Symbols" }
configuration "Release"
defines { "NDEBUG" }
flags { "Optimize" }
main.cpp中:
#include <iostream>
int main(){
std::cout << "hello world" << std::endl;
return 0;
}
知道它为什么不像标准示例那样工作? http://industriousone.com/post/typical-c-project-0
使用make config=release verbose=1
完成输出:
==== Building cpp_hello_world.out (release) ====
Creating obj/Release
mkdir -p obj/Release
main.cpp
c++ -MMD -MP -DNDEBUG -O2 -std=c++1y -o "obj/Release/main.o" -c "main.cpp"
Linking cpp_hello_world.out
c++ -o ./cpp_hello_world.out obj/Release/main.o -Wl,-x
ld: internal error: atom not found in symbolIndex(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [cpp_hello_world.out] Error 1
make: *** [cpp_hello_world.out] Error 2
答案 0 :(得分:0)
我能够使用Premake4在我的Mac OS X 10.10.2上重现错误。问题出在您的项目名称上,该名称不应具有.out
扩展名。尝试将项目重命名为premake4.lua文件中的“cpp_hello_world”。
即。第4行应为:
project "cpp_hello_world"
如果您在进行此更改后仍然遇到问题,我可以在10.9.4上对VM进行测试和故障排除 - 请告诉我们!