如何在Linux创建静态库和动态库
函数库分为静态库和动态库。程序编译时,静态库将连接到目标代码,程序运行时不再需要静态库。
在编译程序时,动态库没有连接到目标代码,但在程序运行之前加载。因此,当程序运行时,需要动态库存。
计划1:你好,H。
#则hello_h
#定义hello_h
空hello(const char *名称);
# endif / / hello_h
计划2:你好,C
#包括
空hello(const char *名称)
{
Printf (Hello%s! n
}
方案3:主C。
#包括你好。H
主()
{
你好(每个人);
返回0;
}
动态库和静态库都需要使用O文件来生成和编译O文件。
# gcc的C C你好。
1:创建静态库
命名一个静态库文件名前缀为lib,然后与静态库的名字。扩展。例如,我们可以创建静态库的名字是myhello,是静态库文件名libmyhello A.
Ar Cr libmyhello,你好啊#
使用:只需要添加一个静态库包含了你需要使用你的源程序语句的功能(包含头文件),那么gcc生成时指定的静态库是好目标文件(除非你包含头文件 / usr /包括标准库,库文件/ usr / / lib库,,或你要表明他们的路径)
GCC啊主。C L - lmyhello #
#。 /你好
大家好!
将静态库文件删除以运行 hello,程序正常运行,表明静态库公共函数已链接到目标文件。
2:通过使用O文件创建动态库
动态库文件的扩展名是called.so。
GCC -shared -fPCI -o libmyhello.so hello.o #
动态库的使用与静态库的使用是相同的。
GCC啊主。C L - lmyhello #
#。 /你好
。 /您好:加载共享库时出错:libmyhello.so:不能打开共享对象文件:
哦,有一个错误。看看错误提示。事实证明,动态库文件libmyhello.so不能发现。当程序运行时,它会查找所需要的动态库文件在/ usr / lib和 / lib.if找到目录,动态库被加载,否则程序会提示终止程序像上面的错误。
有3种方法来查找生成的动态库。
1)复制图书馆到 / usr / lib和 / lib目录。
(2)添加的库的路径的ld_library_path环境变量。
例如,动态库libhello.so是 / / /家例lib目录:
出口ld_library_path =美元美元ld_library_path: / / / lib回家的例子
(3)修改 / / ld.so.conf等文件,添加的库的路径到文件的末尾,执行要想刷新。这样,添加目录下的所有文件都是可见的。
当静态库和动态库被命名时,GCC命令将优先使用动态库。
函数库分为静态库和动态库。
程序编译时,静态库将连接到目标代码,程序运行时不再需要静态库。
在编译程序时,动态库没有连接到目标代码,但在程序运行之前加载。因此,当程序运行时,需要动态库存。
计划1:你好,H。
#则hello_h
#定义hello_h
空hello(const char *名称);
# endif / / hello_h
计划2:你好,C
#包括
空hello(const char *名称)
{
printf(Hello %s!n
}
方案3:主C。
#包括你好。H
主()
{
你好(每个人);
返回0;
}
动态库和静态库都需要使用O文件来生成和编译O文件。
# gcc的C C你好。
1:创建静态库
命名一个静态库文件名前缀为lib,然后与静态库的名字。扩展。例如,我们可以创建静态库的名字是myhello,是静态库文件名libmyhello A.
Ar Cr libmyhello,你好啊#
使用:只需要添加一个静态库包含了你需要使用你的源程序语句的功能(包含头文件),那么gcc生成时指定的静态库是好目标文件(除非你包含头文件 / usr /包括标准库,库文件/ usr / / lib库,,或你要表明他们的路径)
GCC啊主。C L - lmyhello #
#。 /你好
大家好!
将静态库文件删除以运行 hello,程序正常运行,表明静态库公共函数已链接到目标文件。
2:通过使用O文件创建动态库
动态库文件的扩展名是called.so。
GCC -共享-联邦处罚和改造制度- O O # libmyhello.so你好。
动态库的使用与静态库的使用是相同的。
GCC啊主。C L - lmyhello #
#。 /你好
。 /您好:加载共享库时出错:libmyhello.so:不能打开共享对象文件:
哦,有一个错误。看看错误提示。事实证明,动态库文件libmyhello.so不能发现。当程序运行时,它会查找所需要的动态库文件在/ usr / lib和 / lib.if找到目录,动态库被加载,否则程序会提示终止程序像上面的错误。
有3种方法来查找生成的动态库。
1)复制图书馆到 / usr / lib和 / lib目录。
(2)添加的库的路径的ld_library_path环境变量。
例如,动态库libhello.so是 / / /家例lib目录:
出口ld_library_path =美元美元ld_library_path: / / / lib回家的例子
(3)修改 / / ld.so.conf等文件,添加的库的路径到文件的末尾,执行要想刷新。这样,添加目录下的所有文件都是可见的。
当静态库和动态库被命名时,GCC命令将优先使用动态库。