作者zaimoku (遇见未来)
看板MacDev
标题Re: [问题] xcode link static library
时间Fri Sep 14 23:06:09 2007
※ 引述《yllan (蓝永伦)》之铭言:
: 标题: Re: [问题] xcode link static library
: 时间: Fri Sep 14 11:33:47 2007
:
: ※ 引述《Blueshiva (龙野南云)》之铭言:
: : ※ 引述《WalkingIce (会走路的冰块)》之铭言:
: : : 在高阶语言写的东西可能看起来一样,但是经过编译、组译之後就差多了
: : : 也许你抓的 library 当初在编译的时候就是以 i386 的格式
: : : 而你在 release mode 里面却把它当成 ppc 来解释
: : : 所以 xcode 就抱怨它看不懂了!
: : : 至於这两者的格式哪里不同,我就真的不清楚了....:P
:
: 应该是这样没错,以前遇过一样的问题~
:
: : 原po一开始有提到这个 library 是他从 source 编译出来的,所以应该不是
: : i386/ppc 二进制码的问题
:
: 用 gcc compile 出 universal binary 没想像中容易喔,
: 很多 unix 的东西直接编都只会编出 native architecture 而已。
: 作法是先用 ppc arch 编一次,再用 intel arch 编一次,
: 最後再用 lipo 把两个黏起来。
:
: 想编 universal binary 的话,所有 dependency 都要有 ub...
: 所以原 po 改成用 intel arch 以後就可以编了,因为他的 .a 只有 x86..
首先...感谢各位的解答......我想应该就是我那个.a只有for x86吧..
我是按网路上的说明..在mac 终端机用 make build出来的....而我那台
mac是intel的cpu..所以.build出来的东西应该 for x86的...因为对..
linux平台的make 不是很熟也不知道他是做了些设怎麽去改设定...
然後我用xcode建project而project的 arch 是设
成ppc i386..这样就build不出来..如果只设i386就OK.....
後来试了一下用xcode build library...arch设成 ppc i386..这样的.a
就可以在 别的project上build不管是设成i386或ppc
要for i386又要for ppc.. xcode只要设arch = ppc i386
今天试了一下他应该是build出两份op code在合并起来吧...
因为size变为原来只设一种的两倍大...
可是...如果我要设定某些function for 386.. 某些function
for ppc..或着是某些.c档for pcc 某些.c档 for i386
build成同一档案...不知这要如何做...??
上面有人提到用...lipo...应该是合并两个library成一个吧 ??
是否有....有可以利用 #ifdef "arch_ppc" 之类的做法吗...
"arch_ppc"只是我举例...不知道在arch设成ppc会有没有
相对应的符号("arch_ppc")可用..
:
: : : 我以为只要找不到 function 就会中止 link 耶....
: : : 我猜 xcode 还是可以调整这个选项吧?!
: : : function call 就是一个 JMP 的动作
: : : 因为找不到 function 的 address,也不知道要跳到哪里去,所以就挂掉了:P
: : 我在猜,这可能是 Xcode zero-link 这个功能引发的问题...
:
: 这是回答原 po 後半段的问题吧~应该就是这样~
:
喔....原来是zero-link问题....谢罗..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.196.220