多文件链接编译

下面有两个文件 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

多文件链接编译

时间: 2024-10-02 07:55:13

多文件链接编译的相关文章

Effective C++ Item 31 降低文件间编译依存关系

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:支持"编译依存性最小化"的一般构想是:相依于声明式,不要相依于定义式. 基于此构想的两个手段是 Handle classes 和 Interface classes. 示例:相依于定义式 #include <string> #include "date.h" #include "address.h" class Perso

C语言文件的编译到执行的四个阶段

C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 第一个阶段: 是预处理阶段,在正式的编译阶段之前进行.预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容.如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp

文件链接_rpm_yum

文件链接分为两种:一种是符号链接(也叫软链接):另外一种是硬链接 软链接其实依赖于源文件,也就是说在文件分配表当中:软链接其实是一个指针:它指向了另外一个文件:我们在使用软链接的时候,需要源文件存在,源文件不存在,链接文件也就无法创建:所谓的符号文件指的就是windows下的快捷方式:通过链接文件找到源文件:软链接可以节省空间,并且可以跨分区进行软链接,做软链接时要加上绝对路径,这样不容易出错.软链接可以是文件也可以是目录 一.符号链接软链接 [[email protected] ~]# ech

Linux下多个.c文件的编译和Makefile文件

在编程的时候,我们可以把一个完整程序的每个函数分离出来,写成.c文件,最后再一起编译和链接.这样有利于程序功能模块化,也方便检查代码错误. .h文件:里面编辑该程序需要引用的头文件. #ifndef  /#define / #endif : 防止该头文件被重复引用. 整体用法: #ifndef  A_H             //如果没有a.h文件,#define A_H.如果有,结束定义 #define  A_H            //定义a.h文件 定义a.h需要的头文件 #endif

Pch文件预编译

因为项目用到Pch文件链接宏变量,因而稍作研究怎样使用,define宏变量其实并不合适 ,static const才最适合 Pch文件听说是上古世纪存在的文件,主要是用来全局预编译文件统一在一个出口,方便编程管理,但同时往往会造成预编译时间过长,但预编译只要设置恰当,其实并没有增加时间,还方便了开发,用着好处多多,废话不多说,现在立刻学习怎么使用. 1.在Xcode创建Pch文件 Pch文件已经被放到Other中,可见Apple已经不怎么待见这个文件了,还是希望开发者多在文件头部引入减少编译时间

android NDK编译(导入).a文件和编译多个so文件(转)

源:android NDK编译(导入).a文件和编译多个so文件 一.编译一个静态库 libstatic_android.a LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := static_android LOCAL_SRC_FILES := libstatic_android.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MOD

[转]c++应用程序文件的编译过程

原文地址 这里讲下C++文件的编译过程及其中模板的编译过程: 一:一般的C++应用程序的编译过程.    一般说来,C++应用程序的编译过程分为三个阶段.模板也是一样的. 在cpp文件中展开include文件. 将每个cpp文件编译为一个对应的obj文件. 连接obj文件成为一个exe文件(或者其它的库文件). 下面分别描述这几个阶段.1.include文件的展开.    include文件的展开是一个很简单的过程,只是将include文件包含的代码拷贝到包含该文件的cpp文件(或者其它头文件)

Linux链接库四(多个库文件链接顺序问题)

最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助. 1.  链接时缺失了相关目标文件(.o)     测试代码如下: 然后编译. gcc -c test.c gcc –c main.c 得到两个 .o 文件,一

【转】 Apk文件及其编译过程

Apk文件概述 Android系统中的应用程序安装包都是以apk为后缀名,其实apk是Android Package的缩写,即android安装包. 注:apk包文件其实就是标准的zip文件,可以直接用解压缩软件解开.Apk包中的内容 解压缩一个apk文件后,目录结构一般如下: *.apk ├-res │ ├+layout │ └+drawable ├-META-INF │ ├-MANIFEST.MF │ ├-CERT.SF │ └-CERT.RSA ├-resources.arsc ├-cla