我要编译一个多文件C程序,并且出现以下错误;
Undefined symbols for architecture i386:
"included::printMSG()", referenced from:
_main in ccQwMj1l.o
ld: symbol(s) not[Finished in 0.3s with exit code 1] found for architecture i386
collect2: ld returned 1 exit status
我的代码:
main.cpp:https://gist.github.com/3845822
cpp:https://gist.github.com/3845825
h.https://gist.github.com/3845827
(确认可以与g一起使用)
编辑:我不是将这些文件放在一个项目中,它们都都在同一个文件夹中,并且我正在编译main.cpp
解决方法:
您不仅可以编译一个文件,还希望所有其他文件都自动链接到该文件以创建最终程序.
实现该目标的一种方法是使用一个名为make
的程序,该程序读取包含make遵循规则的Makefile.
一个简单的Makefile可能如下所示:
CXXFLAGS = -Wall -g
my_pogram: main.o other_file.o third_file.o
g++ main.o other_file.o third_file.o -o my_program
main.o: main.cpp
g++ $(CXXFLAGS) -c -o main.o main.cpp
other_file.o: other_file.cpp
g++ $(CXXFLAGS) -c -o other_file.o other_file.cpp
third_file.o: third_file.cpp
g++ $(CXXFLAGS) -c -o third_file.o third_file.cpp
还有其他类似程序可以处理此问题.最受欢迎的是CMake.