计算化学公社

标题: 这个libint报错该怎么解决? [打印本页]

作者
Author:
Freeman    时间: 2021-8-4 12:52
标题: 这个libint报错该怎么解决?
本帖最后由 Freeman 于 2021-8-4 13:04 编辑

从github上下载好libint-2.5.0.tgz后,解压,configure,make,make install都完成了,并在.bashrc里添加了
  1. export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/libint/2.5.0/include
复制代码
写一个简单的C++代码:
  1. #include <libint2.hpp>
  2. //using namespace libint2;
  3. int main(){
  4.     //initialize();
  5.     //finalize();
  6. }
复制代码
运行,报错:
  1. /tmp/ccdkPong.o:在函数‘libint2::detail::__initializer::~__initializer()’中:
  2. f**k.cpp:(.text._ZN7libint26detail13__initializerD2Ev[_ZN7libint26detail13__initializerD5Ev]+0xd):对‘libint2_static_cleanup’未定义的引用
复制代码
请问大家有知道这是啥情况的吗?

本来用最新的2.6.0版本,遇到了这个问题。官网上说,从2.6.0开始就不建议使用GNU make,而要用cmake了。我还以为是新版本不能用make而导致的编译错误,但是换了2.5.0再试了一遍,发现是同样的报错。


作者
Author:
lyj714    时间: 2021-8-4 13:38
弱弱的问一句,你是不是没有添加链接选项-lint2
作者
Author:
Freeman    时间: 2021-8-4 13:46
lyj714 发表于 2021-8-4 13:38
弱弱的问一句,你是不是没有添加链接选项-lint2

没有,那是啥啊?
作者
Author:
lyj714    时间: 2021-8-4 13:49
Freeman 发表于 2021-8-4 13:46
没有,那是啥啊?

c/c++你链接到外部库肯定要用的哇,就比如gcc编译器用math.h需要添加-lm一样。
作者
Author:
Freeman    时间: 2021-8-4 13:52
lyj714 发表于 2021-8-4 13:49
c/c++你链接到外部库肯定要用的哇,就比如gcc编译器用math.h需要添加-lm一样。

那么我该怎么加这个-lint2呢?
作者
Author:
lyj714    时间: 2021-8-4 13:55
Freeman 发表于 2021-8-4 13:52
那么我该怎么加这个-lint2呢?

我的意思是如果你用的g++编译器,就用这种命令行编译链接
  1. g++ foo.cpp -lint2 -I <include> -L <lib> -o foo
复制代码

作者
Author:
zhaoxy008    时间: 2022-6-28 17:38
lyj714 发表于 2021-8-4 13:55
我的意思是如果你用的g++编译器,就用这种命令行编译链接

请问能否说下,在什么情况、什么文件夹下执行此命令呢?

作者
Author:
wzkchem5    时间: 2022-6-28 18:04
zhaoxy008 发表于 2022-6-28 10:38
请问能否说下,在什么情况、什么文件夹下执行此命令呢?

在你写的cpp文件所在目录下执行这个命令。
只有当你需要自己写C/C++代码调用libint的时候需要。如果用别人已有的、调用libint的代码,并且别人有Makefile的情况,应该看一下Makefile里面库函数在哪里定义,然后加在那里,或者在configure的时候指定。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3