钱宁弗莱三分集锦:在Linux和Unix环境下编写可执行文件和库文件的命令
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 00:28:04
在Windows中静态库的扩展名为 .lib 动态库的扩展名为 .dll
在Linux和Unix下静态库的扩展名为 .a 动态库的扩展名为 .so
Linux平台下
l 在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
l 在Linux下编写调用动态库或静态库的可执行文件的命令:
gcc –o 目标文件名 源文件名(列表)库文件名(列表)
如果工程包含多个.c和.h那么在源文件名列表中只列出所有的 .c文件和库文件
例:工程文件夹里有 main.c enc.so要将他们编译成EncApp可执行文件,则使用下面的命令
gcc –o EncAp main.c enc.so
注意:.so文件必须事先复制到 /usr/lib目录下
l 生成静态库需要的命令
生成静态库 .a 必须先生成 目标文件 .o 然后再生成静态库 .a
生成目标文件的命令格式为:
gcc –c –o 目标文件名.o 源文件名.c (列表)
生成静态库的命令格式为:
ar –r 静态库文件名.a 目标文件名.o
l 生成动态库需要的命令
生成动态库 .so 必须先生成 目标文件 .o 然后再生成动态库 .so
生成目标文件的命令格式为:
gcc –fpic –c –o 目标文件名.o 源文件名.c (列表)
生成动态库的命令格式为:
gcc –shared –o 动态库文件名.so 目标文件名.o
l 备注:在编译可执行文件,各种目标文件和库文件的时候,用到的.h文件必须在编译文件夹下,如果没有这些头文件,编译器将报错。
Unix平台下
l 除了生成so文件的时候略有不同外,其他都相同,只是将 gcc 改成 cc
l 生成动态库的命令格式为:
cc –dy –G –o 动态库文件名.so 目标文件名.o