V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zeroday
V2EX  ›  问与答

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

  •  
  •   zeroday · 2015-06-09 01:52:56 +08:00 · 1717 次点击
    这是一个创建于 3447 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现在打算把代码拆分成头文件,函数实现,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

    4 条回复    2015-06-09 08:50:06 +08:00
    billlee
        1
    billlee  
       2015-06-09 02:31:48 +08:00   ❤️ 1
    你忘了实现 init_stack() 了.
    evlos
        2
    evlos  
       2015-06-09 05:04:27 +08:00
    写 makefile (我是 C 语言渣渣,仅供参考
    zhjits
        3
    zhjits  
       2015-06-09 07:32:12 +08:00
    main.c 和 stack.c 里面都要 #include <stack.h>
    zeroday
        4
    zeroday  
    OP
       2015-06-09 08:50:06 +08:00
    @billlee 非常感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3669 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:22 · PVG 12:22 · LAX 20:22 · JFK 23:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.