一、C语言中的字符和字符串
字符类型char为基本类型,只能表示一个字符
char ch = 'a';
printf("ch is %c\n",ch);
字符串可以用字符数组表示
char ch[] = "xiaosa";
printf("ch is %s\n",ch);
字符串也可以用字符指针来表示
char *ptr = "xiaosa";
int i;
for(i=0;i<6;i++)
{
printf("%c\n",*ptr);
ptr++;
}
二、动态链接库(libxxx.so)
把me.c变成动态链接库
gcc -shared me.c -o libme.so
gcc -L ./ -l me xiaosa.c -o xiaosa
会生成可执行程序xiaosa
执行./xiaosa会报:./xiaosa: error while loading shared libraries: libme.so: cannot open shared object file: No such file or directory的错误
再通过执行ldd xiaosa来查看可执行性程序的依赖,会发现libme.so => not found
只有将我们生成的动态链接库libme.so拷贝到/lib或者/lib64或者/usr/lib或者/usr/lib64的目录下,再“更新”动态链接库,系统就可以找到这个libme.so了
cp libme.so /usr/lib
ldconfig
在执行可执行程序./xiaosa就不会报错,执行ldd xiaosa就可以发现libme.so => /usr/lib/libme.so
三、修改makefile文件执行make && make install
将上面生成动态链接库和联合编译的过程写到makefile中。
先删除刚才生成的libme.so和xiaosa
rm -rf libme.so xiaosa
修改makefile文件
xiaosa:xiaosa.c libme.so
<tab>gcc -L ./ -l me xiaosa.c -o xiaosa
libme.so:me.c
<tab>gcc -shared me.c -o libme.so
install:
<tab>cp ./libme.so /usr/lib
<tab>ldconfig
执行make就会编译生成libme.so和xiaosa
再执行make install执行拷贝操作
也可以直接执行make && make install
再执行./xiaosa
我们在编译执行一些软件的时候基本上都要使用make和make install,实际上就是执行编译和复制的过程