解决make编译链接动态库错误:libxx.so: undefined reference to xx
最近在写一个Makefile,调试时遇到了libsrcpbl.so: undefined reference to gcProgramName
的问题。在这个Makefile脚本里面,终极目标是通过链接一个自定义的动态库libsrcpbl.so
生成一个ELF目标文件。
由于链接生成libsrcpbl.so动态库的.o文件比较多,无法定位具体的错误程序文件和位置,所以折腾了较长时间。
Unix系统中nm命令展示目标文件符号的方法
在unix系统中,通过gnu开源gcc或者g++工具生成的目标文件(object file),可以用nm
、objdump
和readelf
这三个命令来查看。
之前在调试makefile文件的时候,链接动态库出错:libsrcpbl.so: undefined reference to 'gcProgramName'
。也就是变量gcProgramName没定义,后来通过nm -u libsrcpbl.so
命令辅助排查解决了。
Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别
昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错。链接命令大概是这样的:
/usr/bin/ld: cannot find -lmyhello collect2: error: ld returned 1 exit statusUnix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理
好久没更新博客了,写篇文章除除草。这篇文章主要通过简单的例子说明一下Unix/Linux进程中如果捕捉和处理SIGTERM
、SIGUSR1
和SIGUSR2
信号。
先说明一下这三个信号:
SIGTERM:进程终止信号,效果等同于*nix shell中不带-9的kill命令; SIGUSR1:保留给用户使用的信号; SIGUSR2:同SIGUSR1,保留给用户使用的信号。CentOS中将备份文件同步到BitBucket、GitHub和Coding的shell脚本
在上一篇文章讲述了如何在Linux系统中配置BitBucket、GitHub和Coding这三个平台的git账户,这篇文章就分享如何通过shell脚本定时获取自己的CentOS7.1服务器上的备份文件,然后使用git命令同步到这三个平台仓库上。
CentOS系统BitBucket、GitHub和Coding等多git账户的配置
目前自己主要在BitBucket、GitHub和Coding这三个Git平台创建了一些项目,所以这篇文章以自己的CentOS7.1服务器作为示例,说说如何在Linux系统中配置不同平台的Git仓库,也即多git账户的配置。
类似于Windows机器上的git配置方法,在CentOS上也是一样的。通过设置Git全部变量的配置文件~/.ssh/config
和当前工作仓库的配置文件your_git_project_root/.git/config
即可。
2015博客升级记(八):CentOS7定时备份博客程序的shell脚本
这是《2015年博客升级记》系列文章的第八篇,同时也是这一系列文章的最后一篇,内容主要记录在Linux系统中如何使用shell脚本备份服务器上的博客程序(当然也可以是主机上的任何目录或者文件)。