把一个源码拆分成多个源码文件,如何用 gcc 编译呢?

2015-06-09 01:52:56 +08:00
 zeroday

代码是数据结构堆栈的实现,原本是整合在一个源码文件,可以编译运行。

现在打算把代码拆分成头文件,函数实现,main 三个部分,让代码可重用。

编译时出现下面错误,链接时出错。请问多个文件要如何用 gcc 编译呢?

➜  stack git:(master) gcc main.c stack.c 
Undefined symbols for architecture x86_64:
  "_init_stack", referenced from:
      _main in main-3b4501.o
      _decimal_to_base_n in stack-776e03.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

代码在这

https://github.com/henry-zhuang/stack

1728 次点击
所在节点    问与答
4 条回复
billlee
2015-06-09 02:31:48 +08:00
你忘了实现 init_stack() 了.
evlos
2015-06-09 05:04:27 +08:00
写 makefile (我是 C 语言渣渣,仅供参考
zhjits
2015-06-09 07:32:12 +08:00
main.c 和 stack.c 里面都要 #include <stack.h>
zeroday
2015-06-09 08:50:06 +08:00
@billlee 非常感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/197084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX