0
GNUコンパイラがリンクするためにnVIDIAコンパイラを使用して共有ライブラリを生成したい。実行時まですべてがうまくいく。以下はその詳細です。ありがとう!リンクするGNUコンパイラの共有ライブラリを生成するためにnVIDIAコンパイラを使用するとランタイムエラーが発生する
main.cppに:
#include <iostream>
using namespace std;
void fcudadriver();
int main()
{
cout<<"Maine "<<endl;
fcudadriver();
return 0;
}
test.cu:
__global__ void fcuda()
{
}
void fcudadriver()
{
fcuda<<<1,1>>>();
}
コンパイル:
nvcc --compiler-options '-fPIC' -o libtest.so --shared test.cu
g++ main.cpp -L. -ltest
ラン:
./a.out
の結果:
./a.out: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
それは働きます!ありがとう! –
これはg ++とは関係ありません。実行時リンカーは、/etc/ld.so.confと環境変数LD_LIBRARY_PATHによって制御される一連のパスで共有ライブラリを探します。それがLinux上で動作する方法です。 (そして、setuidプログラムで注目すべきいくつかの注意点があります。) 'man ld.so' – Mat