2012-04-06 59 views
0

我想使用nVIDIA編譯器爲我的GNU編譯器生成一個共享庫來鏈接。一切都很順利,直到運行。以下是詳細信息。謝謝!使用nVIDIA編譯器爲我的GNU編譯器生成共享庫時運行時錯誤鏈接

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 

回答

1

.需要在你的LD_LIBRARY_PATH爲運行時鏈接找到你的共享庫。

嘗試:

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. ./a.out 
+0

它的工作原理!謝謝! – 2012-04-06 14:51:55

+2

這與g ++無關。運行時鏈接程序在由/etc/ld.so.conf和環境變量LD_LIBRARY_PATH控制的一組路徑中查找共享庫。這就是Linux上的工作原理。 (有一些關於setuid程序的注意事項。)請參閱man ld.so – Mat 2012-04-06 14:56:04