Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468531
  • 博文数量: 111
  • 博客积分: 2332
  • 博客等级: 大尉
  • 技术积分: 1187
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-29 11:22
文章分类

全部博文(111)

文章存档

2013年(9)

2012年(28)

2011年(17)

2010年(28)

2009年(29)

我的朋友

分类: C/C++

2012-04-01 18:10:48

因为要用到正则表达式,但是posix自带的regex在freebsd实在是没法用,所以用了一下pcre。
下载,安装pcre就不说了,就是默认的
./configure
make 
make install
 
完了之后编译要用到pcre的程序test1.c
gcc -I/usr/local/include -L/usr/local/lib -lpcre test1.c -o test1
这样是能够编译过的。但是这样的程序放到一个没有安装pcre库的机器上跑会报错。/libexec/ld-elf.so.1: Shared object "libpcre.so.1" not found, required by "test1"。因为要用到动态链接库libpcre.so。
所以我就想直接使用静态链接库,这样就不会有上面的现象。
于是就编译test1.c
gcc -I/usr/local/include -L/usr/local/lib -static -lpcre test1.c -o test1
但是这样编译老是报错
undefined reference to `pcre_compile'
undefined reference to `pcre_exec'
首先看到/usr/local/lib下面是有libpcre.a的,说明静态链接库的文件还是有的,没办法就继续google。
最后找到了答案,和我写的编译命令里面各项的顺序有关。(http://hi.baidu.com/thinkingdeeply/blog/item/990035d18ecad0d0562c8468.html
最后改了一下编译命令
gcc  -I/usr/local/include -L/usr/local/lib -static test1.c -lpcre -o test1
编译通过。
然后将编译完的可执行文件,放到了一台没按pcre的机器上,也能运行。
阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~