多文件链接编译

 下面有两个文件 m.c和a.c

 

  m.c

        extern void a(char *);

        int main(int ac,char **av){

            static char string[] = "Hello World!\n": 

            a(string);

            return 0;

        }

 

   a.c

     #include<unistd.h>

     #include<string.h>

     void  a(char *str){

         write(1,str,strlen(str));

     }

  那如何编译呢?单个编译你会发现会报错,所以就文件本身的实现,应该使用多文件合并的编译

  gcc -o a.out  m.c  a.c

  最后会生成一个可执行的文件a.out

 

转载于:https://www.cnblogs.com/kivmi/p/3886615.html

在C++ 开发中,我们通常使用多个文件来编写大型程序,这使得代码更可维护且易于扩展。然而,当我们需要将这些文件组合在一起构建项目时,我们需要了解如何进行编译链接。 C++ 文件分为头文件和源文件。头文件通常包含类、函数和变量的声明,而源文件包含它们的实现。当一个源文件需要访问另一个源文件中的某些内容时,我们需要在头文件中声明它们,并在源文件中包含这些头文件。 下面是一个包含两个源文件的例子:main.cpp 和 myfunc.cpp。 main.cpp 包含一个 main() 函数,myfunc.cpp 包含一个名为 myfunc() 的函数。我们将在 main.cpp 中调用 myfunc()。 main.cpp: ```cpp #include <iostream> #include "myfunc.h" int main() { std::cout << myfunc() << std::endl; return 0; } ``` myfunc.cpp: ```cpp #include "myfunc.h" int myfunc() { return 42; } ``` myfunc.h: ```cpp #ifndef MYFUNC_H #define MYFUNC_H int myfunc(); #endif ``` 在上面的代码中,头文件 myfunc.h 包含了 myfunc() 函数的声明,在 main.cpp 中通过 #include "myfunc.h" 包含了这个头文件,使得 main.cpp 知道了 myfunc() 函数的存在。 接下来,我们需要编译链接这两个源文件,生成可执行文件编译器将源文件转换为目标文件,并将目标文件链接成一个可执行文件。 我们需要使用以下步骤进行编译链接: 1. 将每个源文件编译成目标文件。在命令行中,我们可以使用以下命令来编译两个源文件: ``` g++ -c main.cpp -o main.o g++ -c myfunc.cpp -o myfunc.o ``` 上面的命令将 main.cpp 编译成 main.o 目标文件,将 myfunc.cpp 编译成 myfunc.o 目标文件。这些目标文件包含了源文件中定义的函数和变量的实现。 2. 将所有目标文件链接在一起,生成可执行文件。在命令行中,我们可以使用以下命令来链接两个目标文件: ``` g++ main.o myfunc.o -o myapp ``` 上面的命令将 main.o 和 myfunc.o 目标文件链接起来,生成一个名为 myapp 的可执行文件。 这样,我们就完成了 C++ 多文件编译链接的过程。在实际开发中,我们通常使用构建工具来自动化这些步骤,例如 Makefile 和 CMake。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值