gpt4 book ai didi

c++ - 编译依赖于仅包含 .so 或 .a 文件的 boost 库的程序

转载 作者:行者123 更新时间:2023-11-30 05:47:30 26 4
gpt4 key购买 nike

我有一个小的测试用例程序,只是为了看看 boost 是否在某些系统上工作。

#include <iostream>
#include <boost/math/distributions/normal.hpp>
#include <boost/math/distributions/chi_squared.hpp>

using namespace std;

int main(int argc, char* argv[]) {

// Boost test
boost::math::normal std_normal;
double x = 1.5;
cout << boost::math::cdf(std_normal, x) << endl;

boost::math::normal non_std_normal(1.5, 2);

cout << boost::math::cdf(non_std_normal, x) << endl; // should output 1/2

// Test the chi-squared inverse
int degree_of_freedom = 19;
boost::math::chi_squared chi_dist(degree_of_freedom);
cout << boost::math::quantile(complement(chi_dist, 0.05)) << endl;

return 0;
}

我 ssh 到一些服务器,它们只允许我通过一些充满共享对象和存档文件(即 libboost_log.so、libboost_math_c99.a 等)的目录来使用 boost 库。

老实说,我不知道如何使用这些文件。我试过了(对于 g++ 和 gcc)

g++ test.cpp -o test -l /share/apps/boost/1.55.0/lib

g++ test.cpp -o test -l /share/apps/boost/1.55.0/lib -lboost_system -lboost_filesystem

g++ -std=c++11 -pedantic test.cpp -I/share/apps/boost/1.55.0/include/ -o test

g++ test.cpp -o test -I /share/apps/boost/1.55.0/include -lboost_system -lboost_filesystem

其中/share/apps/boost/1.55​​.0/lib 是 .so 和 .a 文件的目录/share/apps/boost/1.55​​.0/include 是 .hpp 文件的目录。

我被拒绝了第三条命令的权限,输出如下:

In file included from /share/apps/boost/1.55.0/include/boost/math/special_functions/detail/round_fwd.hpp:11:0, from /share/apps/boost/1.55.0/include/boost/math/special_functions/math_fwd.hpp:26, from /share/apps/boost/1.55.0/include/boost/math/special_functions/erf.hpp:13, from /share/apps/boost/1.55.0/include/boost/math/distributions/normal.hpp:19, from test.cpp:12: /share/apps/boost/1.55.0/include/boost/config.hpp:30:29: fatal error: /share/apps/boost/1.56.0/build/boost_1_56_0/boost/config/user.hpp: Permission denied

我收到第四条命令的错误:

fatal error: boost/math/distributions/normal.hpp: No such file or directory.

最佳答案

你想用

g++ -isystem/share/apps/boost/1.55​​.0/include -L/share/apps/boost/1.55​​.0/lib test.cpp -o test -lboost_system -lboost_filesystem

-isystem 告诉编译器去哪里寻找系统头文件。 -L 告诉链接器到哪里寻找库。根据您的代码片段,您是否需要 boost 文件系统或系统库并不明显。

如果您无法读取远程服务器上的 boost header 或共享库,则这与您的问题无关。请联系您的系统管理员寻求帮助。

关于c++ - 编译依赖于仅包含 .so 或 .a 文件的 boost 库的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28533486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com