我尝试在OS X上安装twitcurl,遇到了一些问题。
首先,运行make
会返回clang错误:ld: unknown option: -soname
。我查看了其他在OS X上遇到类似问题的用户的回复,发现以下建议:
在makefile中更改:
LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib
to:
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
to:
$(CC) -dynamiclib -shared -Wl,-install_name,lib$(LIBNAME).dylib.1 $(LDFLAGS) -o lib$(LIBNAME).dylib .o -L$(LIBRARY_DIR) -lcurl
我尝试了这个方法,但结果只是另一个clang错误: clang: error: unknown argument: '-rpath=/usr/lib'
如果您有任何安装twitcurl在OS X系统上的建议,将不胜感激。
----更新----
我想把所有我所做的步骤放在一个地方,以防将来遇到类似问题的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以确保更改成功。
sudo make
ж—¶пјҢжҲ‘дјҡеҫ—еҲ°clang: error: unknown argument: '-rpath=/usr/lib' make: *** [target] Error 1
- еҰӮжһңжҲ‘ж— жі•и®©е®ғе·ҘдҪңпјҢжҲ‘е°ҶдҪҝз”ЁеҸҰдёҖз§ҚиҜӯиЁҖиҝӣиЎҢејҖеҸ‘ - дҪҶеҰӮжһңеҸҜиғҪзҡ„иҜқпјҢжҲ‘жӣҙе–ңж¬ўдҪҝз”ЁC ++гҖӮ - Jonathan Basilesudo
来执行此构建。 - Andy Piper/usr/lib/
,并尝试使用g++ program.cpp -ltwitcurl
进行编译 - 我该如何找出clang正在查找库的位置? - Jonathan Basile-lcurl
,现在唯一的错误是:Undefined symbols for architecture x86_64: "_main", referenced from: implicit entry/start for main executable
。 - Jonathan Basile