本人大部分时间都是从事于C++相关的开放工作,随着公司demo和production机器的不断增加,运维监控,自动运维的事项被重视,开始配置开源的监控工具,开发对应的插件。
2.有关静态库
(1)创建小型函数库,fred.c和bill.c
fred.c
bill.c
$ls *.o
bill.ofred.o
(2)编写一个调用bill的函数程序,创建一个头文件lib.h
lib.h
(3)然后再编写调用程序program.c
(4)编译显式指定目标文件,然后要求编译器编译文件及其先前编译好的目标模块bill.o链接
$gcc -c program.c
$gcc -o program program.o bill.o
$./program
bill:we passed Hello World
(5)创建库文件
$ar crv libfoo.a bill.o frde.o
a-bill.o
a-fred.o
在某些系统中尤其是BerkeleyUnix衍生的系统中,需要为函数生成一个内容表执行如下命令
$ranlib libfoo.a
(6)现在可以使用函数库了
$gcc -o program program.o libfoo.a
$./program
bill:we passed Hello World
(7)可以使用ldd来查看程序需要的共享库
$ldd program
linux-vdso.so.1=> (0x00007ffe27305000)
libc.so.6=>/lib64/libc.so.6(0x00007f01a57ab000)
/lib64/ld-linux-x86-64.so.2(0x00007f01a5b7f000)
(8)获取帮助
$man gcc
$info gcc
OK,本次学习记录结束
开始只是简简单单的用yum install安装配置,然后写对应的插件,但是对于开发的自己老觉得既然是开源,不分析和调试源码心里还是痒痒的,此时的自己发现有点无从下手,windows习惯了IDE的作用,虽然linux也有部分IDE,大部分还是GDB调试,不懂就抽空学习,于是萌发了学习linux下的相关编程学习,由于原先配置的监控软件已经是在centos的linux下,就直接用centos学习吧 , 本人学习的书籍是《linux 程序设计》第四版,有错误之处请指出,也仅仅是自己的理解记录自己的学习过程,看具体的可以直接度娘下载
今天就从Hello World 开始吧
1.编译、连接和运行程序
hello.c
#include<stdio.h>
#include<stdlib.h>
int main(){
printf("Hello World\n");
exit(0);
}
$gcc-o hello hello.c
$./hello2.有关静态库
(1)创建小型函数库,fred.c和bill.c
fred.c
#include<stdio.h>
void fred(int arg){
printf("fred:we passed %d\n",arg);
}
bill.c
#include<stdio.h>
void bill(char*arg){
printf("bill:we passed %s\n",arg);
}
$gcc -c bill.c fred.c (其中-c选项的作用是阻止编译器创建一个完整的程序)
$ls *.o
bill.ofred.o
(2)编写一个调用bill的函数程序,创建一个头文件lib.h
lib.h
/*
*Thisislib.h.It declares the functions fred and bill forusers
*/
void bill(char*);
void fred(int);
(3)然后再编写调用程序program.c
#include<stdlib.h>
#include"lib.h"
int main(){
bill("Hello Wrold");
exit(0);
}
(4)编译显式指定目标文件,然后要求编译器编译文件及其先前编译好的目标模块bill.o链接
$gcc -c program.c
$gcc -o program program.o bill.o
$./program
bill:we passed Hello World
(5)创建库文件
$ar crv libfoo.a bill.o frde.o
a-bill.o
a-fred.o
在某些系统中尤其是BerkeleyUnix衍生的系统中,需要为函数生成一个内容表执行如下命令
$ranlib libfoo.a
(6)现在可以使用函数库了
$gcc -o program program.o libfoo.a
$./program
bill:we passed Hello World
(7)可以使用ldd来查看程序需要的共享库
$ldd program
linux-vdso.so.1=> (0x00007ffe27305000)
libc.so.6=>/lib64/libc.so.6(0x00007f01a57ab000)
/lib64/ld-linux-x86-64.so.2(0x00007f01a5b7f000)
(8)获取帮助
$man gcc
$info gcc
OK,本次学习记录结束