#include <stdio.h>
extern void print_hello();
int main(void)
{
print_hello();
}
#include <stdio.h>
extern void print_hello();
int main(void)
{
print_hello();
}
静态
tao.xie@MT5520SYS:~$ vi main.c
tao.xie@MT5520SYS:~$ vi print_hello.c
tao.xie@MT5520SYS:~$ gcc -c print_hello.c
tao.xie@MT5520SYS:~$ ls
image main.c print_hello.c print_hello.o
tao.xie@MT5520SYS:~$ ar -rcs libhello.a print_hello.o
tao.xie@MT5520SYS:~$ ls
image libhello.a main.c print_hello.c print_hello.o
tao.xie@MT5520SYS:~$ gcc -o test main.c libhello.a
tao.xie@MT5520SYS:~$ ./test
hello
动态
运行时,还可能出现这样的错误:test: error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory,
这是由于程序运行时没有找到动态链接库造成的。程序编译时链接动态链接库和运行时使用动态链接库的概念是不同的,在运行时,程序链接的动态链接库需要在系统目录下才行。有几种办法可以解决此种问题:
将动态链接库的目录放到程序搜索路径中,可以将库的路径添加到环境变量LD_LIBRARY_PATH中实现: