b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

printf()函数 【转】Linux下gcc编译生成动态链接库*.so文件并调用它(9)

电脑杂谈  发布时间:2018-12-25 21:04:53  来源:网络整理

3. 参数:-nostdinc使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置。

在编译驱动模块时,由于非凡的需求必须强制GCC不搜索系统默认路径,也就是不搜索/usr/include要用参数-nostdinc,还要自己用-I参数来指定内核头文件路径,这个时候必须在Makefile中指定。

头文件搜索顺序: 1.由参数-I指定的路径(指定路径有多个路径时,按指定路径的顺序搜索)

2.然后找gcc的环境变量 C_INCLUDE_PATH, CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH

3.再找内定目录 /usr/include /usr/local/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

库文件,但是如果装gcc的时候,是有给定的prefix的话,那么就是 /usr/include prefix/includeprefix/xxx-xxx-xxx-gnulibc/includeprefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

三.Linux指定动态库路径

众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。printf()函数在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。

举一个例子: 所有源文件: 源文件1: lib_test.c #include void prt() { printf('Youfound me!!!/n'); } 源文件2: main.c void prt(); int main() { prt();return 0; } 操作过程: 我们通过以下命令用源程序lib_test.c来创建动态库 lib_test.so。 # gcc–o lib_test.o -c lib_test.c # gcc -shared -fPIC -o lib_test.solib_test.o # 或者直接一条指令: #gcc –shared –fPIC –o lib_test.so lib_test.c#

注意: -fPIC参数声明链接库的代码段是可以共享的, -shared参数声明编译为共享库。请注意这次我们编译的共享库的名字叫做lib_test.so,这也是Linux共享库的一个命名的惯例了:后缀使用so,而名称使用libxxxx格式。

接着通过以下命令编译main.c,生成目标程序main.out。 # gcc -o main.out -L. –l_testmain.c #

请注意为什么是-l_test?

然后把库文件移动到目录/root/lib中。 # mkdir /root/lib # mv lib_test.so/root/lib/ lib_test.so #

# ldconfig # ./main.out You found me!!! #程序main.out运行成功,并且打印出正确结果。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-90979-9.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 尘埃
      尘埃

      高温消毒

    • 李憕
      李憕

      希望台湾人民在台湾独立前离开台湾

    • 镰田梢
      镰田梢

      让得意的人有一丝谦卑和体会生命的失意

    热点图片
    拼命载入中...