Linker failure in libThree20Core.a (TTEntityTables.o)

46 views
Skip to first unread message

Guy Ephraim

unread,
Jun 20, 2010, 5:43:22 AM6/20/10
to Three20, nim...@delver.com
While upgrading to a new version of Three20 - the one with the
splitted projects i've encountered the following problem:

"___save_vfp_d8_d15_regs", referenced from:
+[TTEntityTables(TTSingleton) allocWithZone:] in
libThree20Core.a(TTEntityTables.o)
+[TTEntityTables(TTSingleton) releaseSharedInstance] in
libThree20Core.a(TTEntityTables.o)
+[TTEntityTables(TTSingleton) sharedInstance] in
libThree20Core.a(TTEntityTables.o)
"___restore_vfp_d8_d15_regs", referenced from:
+[TTEntityTables(TTSingleton) allocWithZone:] in
libThree20Core.a(TTEntityTables.o)
+[TTEntityTables(TTSingleton) releaseSharedInstance] in
libThree20Core.a(TTEntityTables.o)
+[TTEntityTables(TTSingleton) sharedInstance] in
libThree20Core.a(TTEntityTables.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

After some browsing I found some solutions to similar problems however
none of them seem to work.

I've verified that all of the Architectures on my project and the
Three20 are the same and also the Base SDK.

I'm compiling to a standard iPhone 3.1.2 (no iPad or OS4 involved) and
the problem happen only when compiling for a real device - for the
simulator everyting seems to be fine.

I'll appreciate any help or ideas on this matter.
Thanks,
Guy.

Yosi

unread,
Jun 20, 2010, 11:04:02 AM6/20/10
to Three20
You are building against ARM7 and it's not allowed when targeting iOS4
and base sdk is os3.

Go to your project settings and make sure "Build Active Architecture
Only" is selected. Then on active Architecture choose Arm 6 and it
will all be fine

Michael Nachbaur

unread,
Jun 30, 2010, 11:56:26 AM6/30/10
to Three20
Actually, this isn't strictly necessary. You don't need to eliminate
the ARM7 platform at all, since iPhone OS3 was perfectly capable of
running on the ARM7 too (modern generation iPods, for instance).
Instead, you need to just make sure that all your included Three20
projects link against the exact version of iPhone OS. For instance, I
went through all Three20 projects and made them compile against iPhone
OS 3.1.3, and set the default target to Device 4.0. It works for me.

Michael Grinich

unread,
Jun 30, 2010, 8:48:07 PM6/30/10
to thr...@googlegroups.com
If you build for arm7, your app will not be able to run on an original
iPhone, iPhone 3G, or first-generation iPod Touch.

Building for arm6 will run on any iOS device.

> --
> You received this message because you are subscribed to the Google Groups "Three20" group.
> To post to this group, send email to thr...@googlegroups.com.
> To unsubscribe from this group, send email to three20+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/three20?hl=en.
>
>

Michael Nachbaur

unread,
Jul 1, 2010, 10:50:41 PM7/1/10
to Three20
Yes, but by building for both arm6 and arm7, you can take advantage of
native processor features when running on newer hardware. So just
make sure your build targets all match up, since it's easy to do and
you can build for both platform types.

drinian

unread,
Jul 12, 2010, 3:00:35 PM7/12/10
to Three20
Michael,

Could you elaborate about how to "make sure your build targets all
match up"? I'm still trying to understand this problem and how to fix
it. I'd like to build for both architectures to take advantage of the
native processor features on the newer hardware rather than just build
for arm6.

Thanks.

Scott

unread,
Jul 12, 2010, 7:28:11 PM7/12/10
to Three20
Guy,

I've posted some details on what I had to do to get everything
working using a Base SDK of iOS4 and a Deployment Target of 3.1.3 (I
Imagine 3.1.2 would work as well, haven't tried). Check out my posts
near the bottom of http://groups.google.com/group/three20/browse_thread/thread/31ddbc047aa1b9ae/c4c5827ab0c7a76f.
Setting Base SDK's and Deployment targets ISN'T enough. If you grab
my fork of three20 (git://github.com/Bauerpauer/three20.git) you get:
all of the proper FIX_CATEGORY_BUG calls, and all of the project build
configurations are setup properly for both Debug and Release builds
for Three20 and all of its sub-projects. Once you have that done,
using three20 is a breeze. Just drag Three20.xcodeproj into your
project, set references, add the Header Search Path configuration to
your PROJECT configuration (not your Target...), make sure -all_load
is NOT added to your Other Linker Flags configuration, and you should
be all set for 3.1.3 -> iOS4 w/ armv6 and armv7 support.

Thanks,
Scott
Reply all
Reply to author
Forward
0 new messages