linux 笔记1

 

  • 远程连接linux服务器

    通过ssh创建远程链接 命令:ssh-keygen -t ras 创建公钥和密钥 在ssh目录下创建authorized_keys将公钥内容拷贝进authorized_keys文件

  • 静态库

    库文件是计算机上的一类文件 可以把库文件看成一种代码仓库 给提供者一些可以拿用的变量、函数或类

    库的好处就是 1.代码保密 2.方便部署和开发

  • 静态库的制作

    静态库就是程序的链接阶段就被复制在了程序中

        使用gcc -c 命令将.文件编译成.o文件

        库的命名规则:linux下:libxxx.a lib:前缀(固定) xxx:库的名字 .a后缀(固定)         windows:libxxx.lib

        在使用(工具archive命令)ar rsc libxxx.a xxx.o xxx.o

        r 将文件插入备份文件中 c 建立备案文件 s 索引

        最后使用执行命令 gcc main.c -o app -I ./include/ -l calc -L ./lib 编译main文件

        -i(大写) 指找main函数中用到的头文件 -l(L的小写)指你要用到的库名字 -L指找到链接生成的库

  • 动态库

    linux:libxxx.so lib:前缀(固定) xxx:库的名字 .so:后缀(固定)在linux下是一个可执行文件 windows:libxxx.dll

  • 动态库的制作

    使用gcc -c -fpic(FPIC) *.c文件 生成动态库的.o文件 再使用gcc -shared *.o文件 -o libxxx.so

  • 工作原理

    静态库:gcc进行链接时 会把静态库中的代码打包到可执行文件中

    动态库:gcc进行链接时 动态库的代码不会被打包到可执行程序中

    程序启动后 动态库会被动态加载到内存中 通过 ldd(list dynamic dependencied)命令检查动态库的依赖关系

  • 如何定位动态库

    当系统加载可执行代码时候 能够知道其所依赖的库的名字 但还需要知道绝对路径 此时就需要系统的动态载入器来获取该绝对路径 对于elf格式的可执行程序 是由ld-linux.so来完成的,它先后搜索elf文件的ST_PATH段→环境变量→LD_LIBRARY_PATH→/etc/ld.so.cache文件列表→/lib/,/usr/lib目录找到库文件后将其载入内存

    1.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:编译好的可执行文件路径 $LD_LIBRARY_PATH:表示在当前环境目录下追加可执行文件路径

    2.在user用户上 vi .bashrc 文件 追加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:可执行文件路径 最后使用. .bashrc 或 source .bashrc

    3.在root用户上vi /etc/profile文件 追加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:可执行文件路径 最后使用. /etc/profile 或 source /etc/profile

    4.通过**/etc/ld.so.cache**文件列表(注意此文件是二进制表要间接修改) 通过/etc/ld.so.conf 将可执行文件的路径写进去 最后sudo ldconfig 更新

    5.将动态库文件拷贝到**/lib/,/usr/lib文件目录下(不建议防止误操作)**

    • 静态库和动态库的对比

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值