在OS X上安装twitcurl

时间:2015-06-14 03:02:04

标签: c++ macos twitter makefile clang

我正在尝试在OS X上安装twitcurl并遇到了一些问题。

首先,运行make会返回clang错误:ld: unknown option: -soname。我查看了OS X上有类似问题的其他用户的回复,并找到了以下建议:

在makefile中,更改:

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的关键作品。

打开makefile并替换:

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

然后第一个参数在-change之后应该是libtwitcurl的错误路径。运行install_name_tool后,可以再次使用otool,以确保更改成功。

1 个答案:

答案 0 :(得分: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链接为libtwitcurl.dylib.1,并且还要更改代码中的使用者密钥和密码,以匹配我帐户上的apps.twitter.com中的有效密钥和密码。工作正常。

我假设你想从代码中使用twitcurl库? Twitter维护一个基于Ruby的实用程序twurl,它具有类似的功能,也可能有用。