连接boost正则表达式的两种方法出错

时间:2009-03-06 02:44:56

标签: c++ regex boost linker

据我所知,通过归档各个目标文件,使用ar实用程序创建了boost regex静态库。

我通过在gcc中使用-l选项链接了boost regex库。这非常有效。

g++ *.o libboost_regex-gcc-1_37.a -o sairay.out

我单独编译了boost regex源文件,然后尝试将我的应用程序的目标文件和boost regex的目标文件链接到一个可执行文件中。但现在我收到了错误。

  g++ *.o -o sairay.out
  Undefined                       first referenced
  symbol                             in file
  main                                /opt/csw/gcc3/lib/gcc/sparc-sun-solaris2.8/3.4.5/crt1.o

我想知道链接静态库和链接静态库文件的各个对象与应用程序之间的区别是什么?

2 个答案:

答案 0 :(得分:2)

我认为它应该是:

g++ *.o -L. -lboost_regex-gcc -o sairay.out -static

答案 1 :(得分:0)

您显然忘记了包含定义main功能的应用程序的目标文件。也许您输入g++ myapp.cpp而不是g++ -c myapp.cpp(实际上已经创建了一个目标文件而不是已经准备好的链接二进制文件)?

静态库实际上只不过是一个包含许多或少数目标文件的存档(由ar实用程序存档),附带符号表索引以便快速查找。因此,如果您在链接中手动包含目标文件,我认为它基本上是相同的。

尝试以下操作以查看其包含的目标文件

ar tv libboost_regex-gcc-1_37.a