beyes@linux-beyes:/media/disk-2> cat /etc/ld.so.conf
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/lib/Xaw3d
/usr/i386-suse-linux/lib
/usr/local/lib
/opt/kde3/lib
include /etc/ld.so.conf.d/*.conf
lib + 库名 + .a
如:
beyes@linux-beyes:/media/disk-2> ls /usr/lib/*.a
/usr/lib/libaa.a /usr/lib/libreadline.a
/usr/lib/libaio.a /usr/lib/libresolv.a
... ...
lib + 库名 + .so + . + version
如:
lrwxrwxrwx 1 root root 17 04-18 12:51 libtirpc.so.1 -> libtirpc.so.1.0.9
lrwxrwxrwx 1 root root 18 04-18 12:51 libxcrypt.so.2 -> libxcrypt.so.2.0.0
搜名 + . + 子版本号 + . + 发布号
如:
libtirpc.so.1.0.9
libxcrypt.so.2.0.0
#ifndef _mylib_h_
#define _mylib_h_
void welcome();
void outstring(const char *str);
#endif
#include "mylib.h"
#include <stdio.h>
void welcome()
{
printf("Welcome to libmylib\\n");
}
void outstring(const char *str)
{
if (str != NULL) {
printf("%s", str);
}
}
gcc -o mylib.o -c mylib.c
beyes@linux-beyes:~/C/lib> ar rcs libmylib.a mylib.o
beyes@linux-beyes:~/C/lib> sudo cp libmylib.a /usr/lib
#include "mylib.h"
#include <stdio.h>
int main()
{
printf("create and use library: \\n");
welcome();
outstring("It's successful\\n");
}
beyes@linux-beyes:~/C/lib> gcc -o test.exe test.c
/tmp/ccoDYPTM.o: In function `main':
test.c:(.text+0x1e): undefined reference to `welcome'
test.c:(.text+0x2a): undefined reference to `outstring'
collect2: ld returned 1 exit status
beyes@linux-beyes:~/C/lib> gcc -o test.exe test.c -lmylib
beyes@linux-beyes:~/C/lib> ./test.exe
create and use library:
Welcome to libmylib
It's successful
gcc -fPIC -o mylib.o -c mylib.c
beyes@linux-beyes:~/C/lib> gcc -shared -o libmylib.so mylib.o
gcc -fPIC -shared -o libmylib.so mylib.o
beyes@linux-beyes:~/C/lib> gcc -o test.exe test.c ./libmylib.so
cp libmylib.so /usr/lib/libmylib.so
gcc -o test.exe test.c /usr/lib/libmylib.so
beyes@linux-beyes:~/C/lib> ./test.exe
create and use library:
Welcome to libmylib
It's successful
sudo mv /lib/libmylib.so /lib/libmylib.so.bak
beyes@linux-beyes:~/C/lib> gcc -o test.exe -lmylib -L. test.c
beyes@linux-beyes:~/C/lib> gcc -o test.exe test.c -lmylib
beyes@linux-beyes:~/C/lib> ldd test.exe
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7df0000)
/lib/ld-linux.so.2 (0xb7f74000)
gcc -o test.exe test.c /lib/libmylib.so
beyes@linux-beyes:~/C/lib> ldd test.exe
linux-gate.so.1 => (0xffffe000)
/lib/libmylib.so (0xb7fb7000)
libc.so.6 => /lib/libc.so.6 (0xb7e34000)
/lib/ld-linux.so.2 (0xb7fbb000)
beyes@linux-beyes:~/C/lib> sudo mv /lib/libmylib.so /lib/libmylib.so.bak
beyes@linux-beyes:~/C/lib> ls /lib/libmylib.so.bak
/lib/libmylib.so.bak
beyes@linux-beyes:~/C/lib> ldd test.exe
linux-gate.so.1 => (0xffffe000)
/lib/libmylib.so => not found
libc.so.6 => /lib/libc.so.6 (0xb7e3a000)
/lib/ld-linux.so.2 (0xb7fbe000)
beyes@linux-beyes:~/C/lib> ./test.exe
./test.exe: error while loading shared libraries: /lib/libmylib.so: cannot open shared object file: No such file or directory
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |