Linux静态库与动态库的使用
一、Linux基本操作命令
1、用户切换:普通用户和管理员权限(su)
2、文件的操作
新建:vi、vim或touch
删除:rm
复制:cp、mv
编辑:vi或者vim编辑器、gedit
文件读写权限的修改:chmod
-rm-r-r-- 1 root root
r(4):读;w(2):写;x(1):可执行
3、目录的操作
新建:mkdir
删除:rmdir(删除空文件夹)、rm -r -f
复制:cp -r
切换:cd
4、网络配置
ifconfig eth0(网卡名称) + ip地址
ping :查看主机之间互通的情况
电脑——虚拟机——开发板之间联系
(配ip地址,要求:ip地址在一个网段内,而且ip地址不能有冲突)
5、压缩与解压
tar、gzip
6、交叉编译器
arm-linux-gcc 可以把.c程序编译成可执行程序,下载到开发板(arm架构)运行
开发板(目标机):处理器、存储器受限
电脑(宿主机):处理器处理能力强,存储大
二、静态库的创建与使用
首先创建unsgn_pow.c文件,包含unsgn_pow()函数的定义:
//创建文件
[root@localhost ~]# cd /home
[root@localhost home]# mkdir AiY
[root@localhost home]# cd AiY
[root@localhost AiY]# touch unsgn_pow.c
编写unsgn_pow.c文件的程序:
unsigned long long unsgn_pow(unsigned int x,unsigned int y)
{
unsigned long long res=1;
if(y==0)
{
res=1;
}
else if(y==1)
{
res=x;
}
else
{
res=x*unsgn_pow(x,y-1);
}
return res;
}
然后创建pow_test.c文件,同unsgn_pow.c创建文件的步骤一样
编写pow_test.c文件:
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
unsigned int x,y;
unsigned long long res;
if((argc<3)||(sscanf(argv[1],"%u",&x)!=1)||(sscanf(argv[2],"%u",&y)!=1))
{
printf("Usage:pow base exponent\n");
exit(1);
}
res=unsgn_pow(x,y);
printf("%u ^ %u = %u\n",x,y,res);
exit(0);
}
接下来创建静态库
不过前提是先安装 gcc 编译器
//运行如下两行,安装完毕即可
yum -y install gcc gcc-c++ out autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
使用归档工具ar将一些目标文件集中在一起
gcc -c unsgn_pow.c
ar rcsv libpow.a unsgn_pow.o
下面编译主程序,将会链接到刚生成的静态库libpow.a
gcc -o pow_test pow_test.c -L. -lpow
./pow_test 2 10
运行结果
2 ^ 10 = 1024
三、动态库的创建与使用
首先使用gcc的-fPIC选项为动态库构造一个目标文件
gcc -fPIC -Wall -c unsgn_pow.c
接下来,使用-shared选项和已创建的位置无关目标代码,生成一个动态库libpow.so
gcc -shared -o libpow.so unsgn_pow.o
编译主程序,链接刚生成的动态库
gcc -o pow_test pow_test.c -L. -lpow
最后运行程序,不过在运行程序之前,需要注册动态库,执行如下命令即可
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/cluster/.share/lib
source /etc/profile
最后切换到创建库的那个文件夹
cd /home/AiY
./pow_test 2 10
运行结果
2 ^ 10 = 1024
相关文章
- 如何在Linux中重置MySQL或者MariaDB的root密码
- 【C/C++开发】C++静态库与动态库以及在Linux和Windows上的创建使用
- 【C/C++开发】C++静态库与动态库以及在Linux和Windows上的创建使用
- 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误
- Linux:系统进程---->查看命令【ps:静态查看进程】【top:动态查看进程】
- linux中/和/root(~) 和 /home
- linux编译curl库的动态库so(转)
- Linux环境thinkphp配置以及数据源驱动改动
- Linux命令——od
- Linux下制作静态库 & 动态库
- Linux下数据库备份恢复过程
- Centos:linux:bridge vs bond 虚拟软设备
- linux下的依赖关系
- Linux 创建静态库以及静态库的使用
- linux使用apache发布静态html网页
- linux虚拟机nat模式 设置静态ip
- linux设置静态获取ip
- linux下的C语言开发(静态库)
- kali linux设置Nat模式配置静态IP
- Linux cat 命令
- Linux链接库二(动态库,静态库,库命名规则,建立个没有版本号的软连接文件)
- 自己在linux上编译、链接、动态库和静态库的学习笔记
- 使用BusyBox制作Linux根文件系统
- Linux编译多个不同目录下的文件以及静态库、动态库的使用
- linux系统编程(一)linux命令解析
- linux系统编程(三)gcc常用技巧与静态库与动态库制作
- 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.37. Bc-1.06.95
- 自学Linux命令的四种方法
- Linux的nm查看动态和静态库中的符号
- Linux 静态库&动态库调用