钱宁弗莱三分集锦:在Linux和Unix环境下编写可执行文件和库文件的命令

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 00:28:04

在Windows中静态库的扩展名为 .lib 动态库的扩展名为 .dll

在Linux和Unix下静态库的扩展名为 .a 动态库的扩展名为 .so

 

Linux平台下

在Linux下编写普通可执行文件的命令:

gcc –o 目标文件名 源文件名(列表)

如果工程包含多个.c和.h那么在源文件名列表中只列出所有的 .c文件

例:工程文件夹里有 des.c  hash.c  main.c  des.h  hash .h要将他们编译成EncApp可执行文件,则使用下面的命令

    gcc  –o  EncApp  des.c  hash.c  main.c

在Linux下编写调用动态库或静态库的可执行文件的命令:

gcc –o 目标文件名 源文件名(列表)库文件名(列表)

如果工程包含多个.c和.h那么在源文件名列表中只列出所有的 .c文件和库文件

例:工程文件夹里有 main.c  enc.so要将他们编译成EncApp可执行文件,则使用下面的命令

gcc  –o  EncAp  main.c  enc.so

注意:.so文件必须事先复制到 /usr/lib目录下

生成静态库需要的命令

生成静态库 .a 必须先生成 目标文件 .o 然后再生成静态库 .a

生成目标文件的命令格式为:

gcc  –c  –o  目标文件名.o   源文件名.c (列表)

生成静态库的命令格式为:

ar  –r  静态库文件名.a   目标文件名.o

生成动态库需要的命令

生成动态库 .so 必须先生成 目标文件 .o 然后再生成动态库 .so

生成目标文件的命令格式为:

gcc  –fpic  –c  –o 目标文件名.o  源文件名.c (列表)

生成动态库的命令格式为:

gcc  –shared  –o  动态库文件名.so  目标文件名.o

备注:在编译可执行文件,各种目标文件和库文件的时候,用到的.h文件必须在编译文件夹下,如果没有这些头文件,编译器将报错。

 

Unix平台下

l  除了生成so文件的时候略有不同外,其他都相同,只是将 gcc 改成 cc

l  生成动态库的命令格式为:

cc  –dy  –G  –o  动态库文件名.so  目标文件名.o