【发布时间】:2017-01-30 16:38:53
【问题描述】:
我用 C++ 编写了一个程序。只要我不使用 g++ 的“-static”选项,链接和运行就可以工作。但我必须使用默认设置从 Antergos USB-Live Stick 运行它,并且不包含 GSL。在他们推荐的 GSL 手册中
$ g++ -c main.cpp
$ g++ -static main.o -lgsl -lgslcblas -lm -lnlopt
但是对于这段代码,我收到一条错误消息:
/usr/bin/ld: cannot find -lgsl
/usr/bin/ld: cannot find -lgslcblas
collect2: Fehler: ld gab 1 als End-Status zurück
我尝试使用 this question,但它对我不起作用。当我跑步时
$ g++ -O2 -o test main.cpp -lgsl -lgslcblas -lnlopt -lm
$ lld test
打印出来
linux-vdso.so.1 (0x00007fffa5b95000)
libgsl.so.19 => /usr/lib/libgsl.so.19 (0x00007f8748c9a000)
libgslcblas.so.0 => /usr/lib/libgslcblas.so.0 (0x00007f8748a5d000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f87486d5000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f87483d1000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f87481ba000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f8747e1c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f87490fe000)
所以我尝试创建一个符号链接,但我也有“libgsl.so”
$ ls /usr/lib/libgsl
libgslcblas.so libgslcblas.so.0.0.0 libgsl.so.19
libgslcblas.so.0 libgsl.so libgsl.so.19.3.0
我在做傻事吗?感谢您的帮助。
【问题讨论】:
标签: g++ static-linking archlinux gsl