boost - 为什么 ld 找不到 lboost_regex?

标签 boost ld source-highlighting

我正在尝试编译 GNU Source highlight在我的主目录中。

我配置了前缀和--with-boost=/path/to/boost/root/dir/并且没有报告错误。

但是当我尝试构建时出现以下错误:

$ make
 ... # lots of output
libtool: link: g++ -shared -nostdlib /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o  .libs/copyright.o .libs/reportbugs.o .libs/fileutil.o .libs/substfun.o .libs/stopwatch.o .libs/utils.o .libs/ioexception.o .libs/settings.o .libs/versions.o .libs/verbosity.o .libs/sourcehighlight.o .libs/styleparser.o .libs/stylescanner.o .libs/outlangdefparser.o .libs/stylecssparser.o .libs/stylecssscanner.o .libs/outlangdefscanner.o .libs/debuglistener.o .libs/langmap.o .libs/stylefileparser.o .libs/langelem.o .libs/statelangelem.o .libs/langelems.o .libs/statestartlangelem.o .libs/stringlistlangelem.o .libs/delimitedlangelem.o .libs/langelemsprinter.o .libs/namedsubexpslangelem.o .libs/stringdef.o .libs/highlightrule.o .libs/highlighttoken.o .libs/highlightstate.o .libs/highlightrulefactory.o .libs/highlightstateprinter.o .libs/sourcehighlighter.o .libs/sourcefilehighlighter.o .libs/linenumgenerator.o .libs/lineranges.o .libs/regexranges.o .libs/formatter.o .libs/formattermanager.o .libs/textstyle.o .libs/textstyleformatter.o .libs/bufferedoutput.o .libs/preformatter.o .libs/wordtokenizer.o .libs/ctagscollector.o .libs/readtags.o .libs/ctagsformatter.o .libs/srcuntabifier.o .libs/textstyleformatterfactory.o .libs/docgenerator.o .libs/doctemplate.o .libs/chartranslator.o .libs/textstylebuilder.o .libs/fileinfo.o .libs/ctagsmanager.o .libs/regexhighlightrule.o .libs/regexrulefactory.o .libs/regexpreprocessor.o .libs/highlightstatebuilder.o .libs/highlightbuilderexception.o .libs/langdefmanager.o .libs/langdefparser.o .libs/langdefscanner.o .libs/languageinfer.o .libs/parserexception.o .libs/stringtable.o .libs/vardefinitions.o .libs/sourcehighlightutils.o .libs/yywrap.o  -Wl,--whole-archive ../../gl/.libs/libgnu.a -Wl,--no-whole-archive  -lboost_regex -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crtn.o    -Wl,-soname -Wl,libsource-highlight.so.1 -o .libs/libsource-highlight.so.1.1.0
/usr/bin/ld: cannot find -lboost_regex
collect2: ld returned 1 exit status

请注意,事实上,我在我的环境中加载了 Boost:

$ echo $LD_LIBRARY_PATH 
/path/to/boost/root/dir/lib:/other/path/lib

ls显示/path/to/boost/root/dir/lib/libboost_regex.so存在并且是libboost_regex.so的符号链接(symbolic link).1.47.0

这怎么可能?怎么解决呢?

最佳答案

在链接时,用于定义查找库的路径的正确环境变量是LIBRARY_PATH,而不是LD_LIBRARY_PATH。前者相当于在 gcc 参数中指定 -L,而后者在运行时使用,如 PATH,查找二进制可执行文件。请参阅this了解更多信息。

关于boost - 为什么 ld 找不到 lboost_regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710844/

相关文章:

c - 为什么在有换行符时用 ld 包装 printf 会失败?

c++ - boost::dynamic_bitset 的逆序

c++ - 使用 boost::future/boost::promise 无法跨线程正确传播异常

linux - 等同于 Linux 上的 DYLD_PRINT_LIBRARIES?

linux - lfs glibc编译ld错误

c++ - VisualAssist 找不到 boost::bind 的声明

c++ - 我可以在 boost 侵入列表中使用双端队列项目吗

phpstorm - 如何使PhpStorm自动突出显示选择

colors - 具有深色背景的 gnu 源突出显示的配色方案