2012-02-05 27 views
2

我正在嘗試爲node.js編寫C++模塊。 節點正在使用waf作爲構建器。waf找不到現有的庫

我想檢查配置,如果庫「sigar」存在。 我試圖這樣做:

def configure(conf): 
    conf.check_cxx(lib='sigar') 

當我運行 「節點-WAF進行配置」,我得到了以下信息:

Checking for library sigar    : not found 

但libsigar.so存在:

# whereis libsigar 
libsigar: /lib64/libsigar.so 

我也在安裝「libsigar」庫後運行ldconfig。 節點模塊編譯,鏈接和工作沒有錯誤。 其他庫如libm,libboost_system等可以在configure上找到。

有人能告訴我我做錯了什麼嗎? 安裝一個庫有沒有什麼特別的事情要做,而不是隻將* .so拷貝到庫路徑並運行ldconfig?

感謝您的任何幫助。

回答

3

解決它我自己。 對於非常詳細的輸出,使用-vvv選項運行configure非常有幫助。

20:31:48 runner system command -> ['/usr/bin/g++', 'Release/test_1.o', '-o', '/home/reeaal/workspace/hwmonitor/build/.conf_check_0/testbuild/Release/testprog', '-Wl,-Bdynamic', '-lsigar'] 

當我試圖重新編譯PROGRAMM,我得到一個鏈接錯誤,真的幫了:

g++ test.cpp -Bdynamic -lsigar 
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlsym' 
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlopen' 
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlclose' 
collect2: ld returned 1 exit status 

檢查libsigar前添加一個鏈接器標誌解決了這個問題:

conf.env.append_value('LINKFLAGS', '-ldl') 
+0

真儘管waf吐出的錯誤信息可能更加明確。 – user1284631 2012-12-18 09:22:30