linux gcc 命令
1,-c 编译目标代码
gcc -o hello.o -c hello.c //-o 只是指定生成目标文件名
或
gcc -c hello.c
都生成hello.o文件,不可以执行。
gcc -o hello hello.o
用目标文件生成hello可执行文件。
gcc -o hello hello.c
用源文件直接生成hello可执行程序。
2,
-fpic或-fPIC 产生位置无关的目标代码,可用于构造共享函数库。
# gcc -fPIC -c message.c
“PIC”命令行标记告诉 GCC
产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道
使用该消息代码的应用程序会将它连接到哪一段内存地址空间。这样编译输出的文
件 message.o 可以被用于建立
共享函数库。
# gcc -shared -o libmessage.so message.o
将上面的mian.c使用共享库函数ligmessage.so编译:
# gcc -o goodbye -lmessage -L. message.o
3,gcc的常用连接选项有下列几个:
-Ldir 将dir目录加到搜寻-l选项指定的函数库文件的目录列表中去,并优先于gcc缺省的搜索目录。在有多个-L
选项的情况下,按命令行上-L选项的前后顺序搜索。dir可使用相对路径。如-L../lib等。
-lname 在连接时使用函数库libname.a,连接程序在-Ldir选项指定的目录下和/lib,/usr/lib目录下寻找该库文件。在没有使用-static选项时,如果发现共享函数库libname.so,则使用libname.so进行动态连接。
-static 禁止与共享函数库连接。
-shared 尽量与共享函数库连接。
4,编译选项顺序
$ gcc test.o -L. -lhello -o test
注意: $gcc -L. -lhello test.o -o test 会出错!。
原因是: -l是链接器选项,必须要放到被编译文件的后面。 所以上面的命令中-lhello一定要放到 test.o的后面。
相关文档:
Linux中的进程通信
1.管道
函数原型:int pipe(int filedes[2]);
函数返回值: 正确返回0;错误返回-1
其中的文件描述符filedes[0]是用来读取数据的,filedes[1]是用来写数据的。
例子1:
#include<stdio.h>
#include<stdlib.h>
#include<u ......
一.前言
Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。
本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。
本文以Linux2.4.16内核作为讲解的对象,内核源码 ......
Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。
Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作 ......
MySQL(root用户)密码忘记重置
分别在Windows下和Linux下重置了MYSQL的root的密码,整理如下:
A:在windows下:
1:进入cmd,停止mysql服务:Net stop mysql
到mysql的安装路径启动mysql,在bin目录下使用mysqld-nt.exe启动,
2:执行:mysqld-nt --skip-grant-tables(窗口会一直停止 ......
几个简单的应用。
1、批量图像格式转换
如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:
for %f in (*.jpg) do convert “%f” “%~nf.png”
2、对所有图像进行同一操作
譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):
......