2015-06-14 263 views
2

我正試圖在OS X上安裝twitcurl,並遇到了一些問題。在OS X上安裝twitcurl

首先,運行make將返回叮鐺錯誤:ld: unknown option: -soname。我通過從其他用戶在使用OS X類似的問題的答覆看了一下,發現以下建議:

在生成文件中的變化:

LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib 

到:

LDFLAGS += -rpath=$(STAGING_DIR)/usr/lib 

變化:

$(CC) -shared -Wl,-soname,lib$(LIBNAME).so.1 $(LDFLAGS) -o lib$(LIBNAME).so.1.0 .o -L$(LIBRARY_DIR) -lcurl 

發送至:

$(CC) -dynamiclib -shared -Wl,-install_name,lib$(LIBNAME).dylib.1 $(LDFLAGS) -o lib$(LIBNAME).dylib .o -L$(LIBRARY_DIR) -lcurl 

我想這一點,但唯一的結果是另一個鐺錯誤:clang: error: unknown argument: '-rpath=/usr/lib'

邁向OS X系統上安裝twitcurl任何意見,將不勝感激。

---- ---- UPDATE

我只是希望把在一個地方所有我把,使這項工作的步驟,在任何情況下,OS X用戶遇到類似問題在未來遇到這種。我感謝Andy Piper提供的關鍵部分。

打開生成文件並替換:

LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib

有:

LDFLAGS += -rpath $(STAGING_DIR)/usr/lib

和:

$(CC) -shared -Wl,-soname,lib$(LIBNAME).so.1 $(LDFLAGS) -o lib$(LIBNAME).so.1.0 .o -L$(LIBRARY_DIR) -lcurl

有:

$(CC) -dynamiclib -shared -Wl,-install_name,lib$(LIBNAME).dylib.1 $(LDFLAGS) -o lib$(LIBNAME).dylib *.o -L$(LIBRARY_DIR) -lcurl (注意,這是從另一個OS X用戶上面給出的建議兩個字符不同)運行make後

,複製libtwitcurl.dylib/usr/lib/

下載TwitterClient的(唯一的,這也是代碼示例,我可以找到)將是相同的,但編譯它或您自己的程序,您將需要鏈接-lcurl以及。 (g++ appname.cpp -ltwitcurl -lcurl

最後,一旦編譯程序,路徑名稱在創建的可執行文件中可能不正確。使用install_name_tool來糾正它。對我來說,這看起來像:

install_name_tool -change libtwitcurl.dylib.1 /usr/lib/libtwitcurl.dylib nameofexecutable

,但如果不爲你工作,使用otool查找實際路徑:

otool -L nameofexecutable

,然後第一個參數 - 更改後應該是libtwitcurl的錯誤路徑。運行install_name_tool後,可以再次使用otool以確保更改成功。

回答

2

我可以得到共享/動態庫來編譯,但作出一些調整,以你的Makefile需要:

LDFLAGS += -rpath $(STAGING_DIR)/usr/lib 

$(CC) -dynamiclib -shared -Wl,-install_name,lib$(LIBNAME).dylib.1 $(LDFLAGS) -o lib$(LIBNAME).dylib *.o -L$(LIBRARY_DIR) -lcurl 

我現在還內置了相關的TwitterClient的效用。爲此,我必須以libtwitcurl.dylib.1的形式象徵性地鏈接libtwitcurl.dylib,並且還要更改代碼中的使用者密鑰和密碼,以便與我的帳戶中的apps.twitter.com中的有效密鑰匹配。工作正常。

我假設你想從代碼中使用twitcurl庫? Twitter維護一個基於Ruby的實用程序,twurl,它具有類似的功能,也可能有用。

+0

這些是我做的相同的修改 - 當我運行'sudo make'時,我得到了'clang:error:unknown argument:'-rpath =/usr/lib' make:*** [target] Error 1' - 如果我無法得到這個工作,我將用另一種語言工作 - 但如果可以的話,我寧願使用C++。 –

+0

不完全相同。注意:在我的rpath之後沒有「=」,而在第二個命令中,它們是「* .o」而不是「.o」 –

+0

也不應該(!)需要使用'sudo'來執行此操作建立。 –