博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux C 编译
阅读量:7095 次
发布时间:2019-06-28

本文共 1554 字,大约阅读时间需要 5 分钟。

hot3.png

  1.  gcc命令

    gcc -I /usr/local/mysql/include mysqlVersion.c -o demo -L /usr/local/mysql/lib -lmysqlclient

    ‍‍‍‍‍‍‍‍‍--I /usr/local/mysql/include/usr/local/mysql/include作为第一个寻找头文件的目录,寻找的顺序是/usr/local/mysql/include-> /usr/include -> /usr/local/include

    -L /usr/local/mysql/lib :表示把/usr/local/mysql/lib 作为第一个寻找库文件的目录,寻找顺序为:/usr/local/mysql/lib -> /lib -> /usr/lib -> /usr/local/lib

    -lmysqlclient:表示在上面的lib路劲中寻找libmysqlclient动态库文件(如果gcc编译选择中加入了"static"表示寻找libmysqlclient.a静态库文件)cd 

    编译成功后,产生demo执行程序

    ./demo 执行报 ./demo: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

    是因为执行查找动态mysqlclient是在/usr/lib,/usr/local/lib下查找,不能查到到,解决办法修改ld..so.conf把/usr/local/mysql/lib加入进去,并同时执行ldconfig把配置文件修改同步到ld.so.cache里 ,必需执行ldconfig,不执行就算重启系统都不生效。

    gcc -c test.s -o test.o :编译成目标文件test.o不链接, -c  编译成目标文件不链接,-o:指定输出文件名,编译时不加-o,生成文件为文件名test加.o为 test.o

    gcc test.o -o test:把目标文件test.o链接为可执行程序test,-o:指定输出文件名

    ------------------------------------gcc常用编译选项---------------------------------------------------

    -c  -- 只编译不链接,生成目标文件“.o"

    -S  -- 只编译不汇编,生成汇编代码

    -E  -- 只进行预编译,不做其它处理

    -g  --  在可执行程序中包含标准调试信息

    -o  file  -- 指定将file文件作为输出文件

    -v  -- 打印出编译器内部编译各过程的命令行信息和编译器的版本

    -I  dir  -- 在头文件的搜索路径列表中添加dir目录

    -static  -- 进行静态编译,即连接静态库,禁止使用动态库

    -shared   --  1. 可以生成动态库文件  2. 进行动态编译,尽可能地链接动态库,只有没有动态库时才会链接同名的静态库(默认选项,即可省略)

    -L dir   -- 在库文件的搜索路径列表中添加dir目录

    -lname  --  链接称为libname.a(静态库)或则libname.so(动态库)的库文件。若两个库都存在,则根据编译方式(-static 还是-shared)而进行链接

    -fPIC(或-fpic)   --  生成使用相对地址的位置无关的目标代码。然后通常使用gcc 的-static选项从该PIC目标文件生成动态库文件。

转载于:https://my.oschina.net/u/1179666/blog/495638

你可能感兴趣的文章
LAMP环境的搭建(三)----PHP7的安装
查看>>
计算最长英语单词链(单词接龙)
查看>>
vsftp虚拟用户配置
查看>>
oracle11g与oracle10g字符集子集与超集的对应关系表
查看>>
登录注册D
查看>>
deepin-wine-tim 字体发虚
查看>>
windows多线程没那么难
查看>>
ID3决策树算法原理及C++实现(其中代码转自别人的博客)
查看>>
linux之SQL语句简明教程---WHERE
查看>>
霍夫变换(hough transform),从直线到圆再到一般图形
查看>>
程序员技术练级攻略--练成这样,成神仙了!
查看>>
基金净值简介
查看>>
打开myeclipse出现这个错是为什么
查看>>
mongdb使用
查看>>
Qt获取多边形(QGraphicsPolygonItem)或Qt图形组件与直线(QLineF)的交点 - 推酷
查看>>
hdu I NEED A OFFER!
查看>>
阿里(蚂蚁,菜鸟)+百度+网易面经(JAVA)
查看>>
VS2008项目移植到Linux
查看>>
Eclipse反编译插件
查看>>
bash shell(5):if,else,while大小比较
查看>>