TypeCodes

解决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),可以用nmobjdumpreadelf这三个命令来查看。

nm:显示目标文件中的符号; objdump:打印目标文件中的详细信息; readelf:显示关于 ELF 目标文件的信息。

之前在调试makefile文件的时候,链接动态库出错:libsrcpbl.so: undefined reference to 'gcProgramName'。也就是变量gcProgramName没定义,后来通过nm -u libsrcpbl.so命令辅助排查解决了。

- 阅读剩余部分 -

Unix系统进程对SIGTERM、SIGUSR1和SIGUSR2信号处理

好久没更新博客了,写篇文章除除草。这篇文章主要通过简单的例子说明一下Unix/Linux进程中如果捕捉和处理SIGTERMSIGUSR1SIGUSR2信号。

先说明一下这三个信号:

SIGTERM:进程终止信号,效果等同于*nix shell中不带-9kill命令 SIGUSR1:保留给用户使用的信号; SIGUSR2:同SIGUSR1,保留给用户使用的信号。

- 阅读剩余部分 -

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即可。

当前git工作仓库的.git目录

- 阅读剩余部分 -