
linux
太上绝情
这个作者很懒,什么都没留下…
展开
-
GCC编译静态库的-fPIC选项
GCC编译静态库的-fPIC选项背景通常在linux下用gcc编译动态库时都会加上一个-fPIC选项来生成位置无关代码,但是从来没有人明确的说过是不是要在编译静态库时也加上-fPIC选项。我在这篇文章中就给出一个明确的结论并讲述原理。介绍-fPIC的原理的文章网上汗牛充栋这里不再赘述。原理分析众所周知,静态库其实是一系列.o文件的打包,将.o文件制作成静态库的过程是不会发生链接的。所以链接静态库就等于将静态库解包后的.o文件一个一个全部链接。-fPIC选项的生效阶段在编译阶段,使用-fPIC选原创 2021-11-04 17:00:45 · 7733 阅读 · 2 评论 -
LD_LIBRARY_PATH导致update-initramfs后找不到库的错误
LD_LIBRARY_PATH导致update-initramfs后找不到库的错误背景本文需要对linux引导启动过程有一定的了解最近在linux上要实现类似于冰点还原的功能,需要借助aufs文件操作系统来实现,而这种类型的驱动模块安装后要重新制作initramfs引导。所以需要在程序中自动的修改系统引导。但是在开发的过程中发现如果使用自己的程序调用脚本修改系统引导会导致系统无法启动,引导阶段提示systemd-udev在启动的时候找不到libcrypto.so。而如果直接在shell里调用脚本,不原创 2020-06-19 10:18:23 · 829 阅读 · 0 评论 -
shell之export难点解析
shell之export难点解析shell中的export的作用是将脚本中的变量导出,使得变量在此脚本之外也能起作用。 export的使用中有一些难点和容易理解错误的地方,在此特别记录下来。生效时机在脚本A中export变量后要注意的是导出的变量并不会在脚本A执行完后在执行脚本A的shell中生效,而是会在脚本A中启动的其他的脚本后在其他的脚本中生效。注意:脚本A里export了一个变量V,那么只原创 2017-04-29 13:20:57 · 1205 阅读 · 1 评论 -
shell中的几种少见的变量继承(传递)方式
shell中的几种少见的变量继承(传递)方式背景众所周知,父shell中的临时变量是不能被子shell继承的。要想继承只能在父shell中将变量使用export导出,变为环境变量。 但是这几天研究一些著名开源项目中的configure脚本,发现了一些不同寻常的方式可以让子shell继承父shell中的变量而不用export导出。使用小括号传递变量AA=aa(echo ${AA})按理说小括号里的原创 2017-04-29 13:10:55 · 3187 阅读 · 0 评论 -
在gcc中的使用调试版c++运行库
在gcc中的使用调试版c++运行库背景vc中的debug和release版很大的一个区别就是他们会分别链接debug和release版的c/c++运行库,而且之间相互不能混用。debug版的c++运行库能够对一些无效迭代器、越界等行为提供检查,提前在debug版发现问题。 这么想来在linux下gcc应该也有相同的功能,但是平时在使用gcc编译程序时好像并没有什么选项能够链接debug版的c++运原创 2016-09-06 20:07:09 · 2080 阅读 · 0 评论 -
linux下的静态库依赖
linux下的静态库依赖背景linux的静态库.a和动态库.so的区别很大,静态库基本上只是一系列.o文件的集合加上符号表,没有链接过程,不能依赖链接其他的静态库或者动态库。如果静态库中用到了其他的库,需要这个静态库的使用者在最终的链接阶段清楚所有使用到的库,然后一一链接。如果静态库依赖的库很多的话,而且依赖的关系很复杂,那么对于最终的使用者来说绝对是一场噩梦。方案linux下的静态库其实就是一系列原创 2016-08-29 20:21:33 · 10868 阅读 · 1 评论 -
linuxshell脚本获取并进入当前目录
linuxshell脚本获取并进入当前目录在linux的shell中经常需要进入脚本当前所在的目录,以其为基准使用相对路径,那么怎样获取到这个路径呢? linux的shell中并没有一个变量能直接代表这个路径,需要自己使用命令来构造。path = $(cd `dirname $0`;pwd)这条简单的命令就可以进入当前的路径,并且将路径值存在变量里。 - 首先是使用反引号包起来的dirname原创 2016-07-07 10:13:50 · 16673 阅读 · 0 评论 -
linux下用命令筛选出路径下的目录名列表
linux下用命令筛选出路径下的目录名列表命令ls -p /var/lib/mysql/data | grep / | tr -d /解析ls -p 的作用是在ls的结果的基础上,对所有的目录后加上一个’/’使用管道连接到 grep / 后就可以过滤掉所有的非目录tr -d的作用是删除某个字符串,此处的含义就是讲上一步的结果通过管道作为输入,然后滤除’/’字符,这样剩下的就是所有的目录名整条原创 2016-07-14 20:54:00 · 4158 阅读 · 1 评论 -
#解决linux下C3P0数据源UnknownHostException的问题
解决linux下C3P0数据源UnknownHostException的问题现象把一个java项目从window上移到linux上后突然出现错误[INFO] Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness java.net.U原创 2016-06-28 17:59:59 · 1489 阅读 · 0 评论 -
mysql在linux上的绿色安装
mysql在linux上的绿色安装mysql在linux的各个发行版中都安装包。但是如果想在一台机器上装多个mysql或者拿不到root权限,就只能装绿色版了 本教程在centos6.7上绿色安装了mysql5.7.其他linux版本应该类似。按照此方法安装的mysql和其他的mysql互不影响。一、下载准备首先要下载mysql的二进制文件,注意,下载通用linux版(Linux - Gener原创 2016-06-28 17:58:11 · 4676 阅读 · 3 评论 -
linux下eclipse c++运行不了提示找不到二进制文件的解决方法
换了linux以后,没有好用的vs,只能用eclipse+cdt来写c++代码了,codeblocks虽然也不错但是代码自动提示还是不如eclipse强啊。今天突然兴起在杭电上刷两道题,构建完成后怎么也运行不了,运行总是提示找不到二进制文件。先从几个容易出问题的点看看把所有运行配置删光,依然不行。再c++项目设置的构建里看了下编译命令是g++ -o没错。再进入到debug目录下找编原创 2013-05-25 21:38:37 · 6382 阅读 · 0 评论