zeroday
V2EX  ›  问与答

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

  •  
  •   zeroday · Jun 9, 2015 · 2144 views
    This topic created in 4078 days ago, the information mentioned may be changed or developed.

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

    现在打算把代码拆分成头文件,函数实现,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 replies    2015-06-09 08:50:06 +08:00
    billlee
        1
    billlee  
       Jun 9, 2015   ❤️ 1
    你忘了实现 init_stack() 了.
    evlos
        2
    evlos  
       Jun 9, 2015
    写 makefile (我是 C 语言渣渣,仅供参考
    zhjits
        3
    zhjits  
       Jun 9, 2015
    main.c 和 stack.c 里面都要 #include <stack.h>
    zeroday
        4
    zeroday  
    OP
       Jun 9, 2015
    @billlee 非常感谢。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   958 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:45 · PVG 02:45 · LAX 11:45 · JFK 14:45
    ♥ Do have faith in what you're doing.