我们有一个脚本可以将PJSIP编译成胖的静态库.但我们想创建一个动态库,以便它可以在swift only项目中使用.
2016年9月9日更新:
使用"--enable-shared"选项编译PJSIP时,大多数lib都是正确构建的.但是,有些lib是针对错误的体系结构编译的,在本例中是x86_64而不是arm64
libg7221codec.dylib is architecture: x86_64
libgsmcodec.dylib is architecture: x86_64
libilbccodec.dylib is architecture: x86_64
libresample.dylib is architecture: x86_64
libyuv.dylib is architecture: x86_64
Run Code Online (Sandbox Code Playgroud)
虽然这些是正确的:
libpjsip.dylib is architecture: arm64
libpjsua.dylib is architecture: arm64
libpjsua2.dylib is architecture: arm64
Run Code Online (Sandbox Code Playgroud)
当我们开始建设:
+ ./configure-iphone --enable-shared
+ make dep
+ make clean
Run Code Online (Sandbox Code Playgroud)
al完全正确但是
+ make
Run Code Online (Sandbox Code Playgroud)
生成这些警告:
ld: warning: -undefined dynamic_lookup is deprecated on iOS
ld: warning: -flat_namespace is deprecated on iOS
Run Code Online (Sandbox Code Playgroud)
和很多警告看起来像这样:
ld: warning: ignoring file
output/libilbccodec-arm64-apple-darwin_ios/iLBC_decode.o, file was built
for unsupported file format ( …Run Code Online (Sandbox Code Playgroud) 我想知道使用时会有什么不同:
lipo -create i386/libAwesome.a armv7/libAwesome.a -o fat/libAwesome.a
Run Code Online (Sandbox Code Playgroud)
和
libtool -static i386/libAwesome.a armv7/libAwesome.a -o fat/libAwesome.a
Run Code Online (Sandbox Code Playgroud)
我的印象lipo更为通用,它只会粘贴来自不同架构的两个文件,而libtool特定于库,这是真的吗?
在什么情况下我应该更喜欢Lipo而不是Libtool?
以下链接器命令导致以下错误.这是为XCode for iOS中的模拟器目标构建的.目前还不清楚甚至通过XCode提供Xlinker参数.关于我如何在这里寻求解决方案的任何想法?
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only i386 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/ iPhoneSimulator7.1.sdk -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -o libxxx.a
错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:未知选项字符`X': - Xlinker
(注意:这个错误似乎无处不在.几天前相同的项目文件正在构建).
我有一个很大的静态库,我想打包到iOS静态框架中以方便使用.该库实际上是几个.a文件,每个库的逻辑模块一个.
我有编制.a的设备(脂肪文件内置文件armv7,armv7s,arm64和模拟器(与FAT文件)i386,x86_64).
现在,AFAIK,我需要将所有这些文件组合成一个大文件,以便构建一个合适的框架.
使用这里描述的技术(组合静态库),我可以做:
libtool -static -o new.a old1.a old2.a
Run Code Online (Sandbox Code Playgroud)
但显然都old1.a和old2.a包括相同的符号.因此,当链接到我的框架时,我得到链接器错误(出于正当理由)duplicate symbols.
一个更正确的方法(从而避免重复的符号)似乎是解压缩.o文件,并将它们组合成一个大.a文件(如何将多个库存档(.a)打包到一个存档文件中?)
ar x old1.a
ar x old2.a
ar rcs new.a *.o
Run Code Online (Sandbox Code Playgroud)
现在,记住,old1.a并且old2.a是胖文件,所以我需要将每个架构分开.
所以这就是我的工作:
lipo old1.a -thin armv7 -output armv7/old1.a
cd armv7; ar x old1.a; cd ..
...
lipo old1.a -thin x86_64 -output x86_64/old1.a
cd x86_64; …Run Code Online (Sandbox Code Playgroud) 我想使用Make install命令,我已经安装了所有要求,如yasm,nasm,curl,ant,rsync和autotools:autoconf,automake,aclocal,pkgconfig,libtool.(确切地说,我想从这里编译Linphone Android NDK:https://github.com/BelledonneCommunications/linphone-android.我已经按照那里的所有步骤)
我尝试使用此命令安装libtoolize:
brew install libtoolize
Run Code Online (Sandbox Code Playgroud)
但终端总是显示:
错误:没有可用的libtoolize公式
如果我尝试进行安装,终端将显示:
找不到libtoolize.请安装libtool.
有人可以帮忙吗?
我正在做一个项目,一切顺利,直到我决定清理我的项目.
仅当我在模拟器上运行我的应用程序时才会出现以下错误(在真实设备上正常运行):
Libtool /Users/Yaman/Library/Developer/Xcode/DerivedData/Homeless-gujyzhsiwenufvedlinbbtrizcpd/Build/Products/Debug-iphonesimulator/libShareKit.a normal i386
cd "/Users/Yaman/Documents/iOS - App à vendre/Homeless/Submodules/ShareKit"
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only i386 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk -L/Users/Yaman/Library/Developer/Xcode/DerivedData/Homeless-gujyzhsiwenufvedlinbbtrizcpd/Build/Products/Debug-iphonesimulator -filelist "/Users/Yaman/Library/Developer/Xcode/DerivedData/Homeless-gujyzhsiwenufvedlinbbtrizcpd/Build/Intermediates/ShareKit.build/Debug-iphonesimulator/Static Library.build/Objects-normal/i386/ShareKit.LinkFileList" -ObjC -all_load -lCopy -lDelicious -lDiigo -lEmail "-lEvernote SDK" -lEvernote -lFacebook "-lFlickr SDK" -lFlickr -lFoursquareV2 "-lGoogle Reader" -lInstagram -lInstapaper -lJSONKit -lKippt -lLinkedIn -lLogout -lOAuth "-lOpen in Safari" -lPinboard -lPrint -lReachability "-lRead It Later" "-lSave to Album" -lShareKitCore "-lSina Weibo" -lSSKeyChain "-lText Message" -lTumblr -lTwitter -lVKontakte -o /Users/Yaman/Library/Developer/Xcode/DerivedData/Homeless-gujyzhsiwenufvedlinbbtrizcpd/Build/Products/Debug-iphonesimulator/libShareKit.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: -dynamic not specified, -all_load invalid …Run Code Online (Sandbox Code Playgroud) 有没有人为MacOS X 10.6 编译或知道预编译的libnoise?由于libtool问题,它不会在这里开箱即用.
libtool --mode=compile g++ -c ../src/latlon.cpp -o ../src/latlon.o
libtool: unknown option character `-' in: --mode=compile
Run Code Online (Sandbox Code Playgroud)