Linux对线程的支持有点土啊,今天在一台Turbo Linux 13的机器上,使用gettid死活提示:
gettid was not declared in this scope....
网上参考了这篇文章
对于比较老的版本,需要借助系统调用才能完成获取线程ID……
#include <sys/syscall.h>
#define gettid() syscall(__NR_gettid)[......]
主要是部分程序使用了大量的assert,如果用线程的话,貌似会把整个进程挂掉,因此只能父子来了。
由于通信的信息不多,所以用管道读写应该就够了。
#include <stdio.h>
int main()
{
int fd[2];
int pid;
char buf[1024];
if( -1 == pipe(fd) )
{
printf("pipe() fail.");
ret[......]
将两个库合并为一个,其实就是解开,获得所有的.o,然后再打包,这种方法当然也适合多个。
ar -x libabc.a
ar -x libxyz.a
ar -c libaz.a *.o
如何向一个.a中追加.o
ar rcs libabc.a *.o
2012.3.1更新:
其实搞复杂了,最简单的还是解压出各种.o,然后再合并:
ar x <library name 1>
ar x <library name 2>
......
ar cs &l[......]
对与版本更新频繁的项目一直都没有好感。比如Cassandra,比如Thrift,天天更新的能靠谱么……
Anyway,用什么不是我能决定的了,还是老老实实编译Thrift吧……
需求就是,至少(也只需要)支持C++和Python
Thrift的依赖写着boost,不加with-boost就不给编译with-cpp唉……
#configure
./configure --with-cpp --with-python --with-boost --without-csharp --w[......]
很多时候,我们的.h/.so/.a/bin文件都不在Linux发行版所指定的默认路径下,这时可以通过~/.bashrc来增加搜索路径。
#增加.so搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/liheyuan/soft/lib
#增加.a搜索路径
LIBRARY_PATH=$LIBRARY_PATH:/home/liheyuan/soft/lib
#增加bin搜索路径
export PATH=$PATH:/home/l[......]