2015-06-14 214 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'来执行此操作建立。 –