The Nexus
Show navigation Hide navigation
  • BLOG
  • ABOUT
    • Ego Surfing
  • PROJECTS
    • n2
    • S2ajax
    • Condo
    • ezEdit
    • FreeBlog - Air
    • Tooredo Alpha
    • Tools
    • Journlr, Again!
11 May 2011 | 2 min. (290 words)

Cross-Compile Android (CM7) on OS X

This is your “up-to-date 5 minutes ago” guide on how to build CyanogenMod 7 using your Mac. Check the date: 05/10/2011.
Note that, obviously, these instructions should also help you with building other ROMs.

Let’s start with the good news :

  • This guide, found in the Cyanogen Wiki, still works (mostly) so we will follow it

  • And the guide would work with any CM7 target. Simply use your own target name; e.g. for Droid Incredible, replace ‘vision’ with ‘inc’

Now, ahem, the bad news :
You will need to do a bit more work than what’s in that guide.

Namely:

The most recent version of XCode, the one you paid for, will fail with this message:

ld: illegal text reloc to DwarfCUImpl

Fix:

Download an older, compatible version. Oh, and it’s free too. I found out (thanks Newsgroups!) that 3.2.4 could very well be the last version of XCode to work properly.
Get it from [this page](http://connect.apple.com/cgi- bin/WebObjects/MemberSite.woa/wo/5.1.17.2.1.3.3.1.0.1.1.0.3.3.3.3.1). That’s the page you get when you go to connect.apple.com and select ‘Developer Tools’.
You will not find this page when visiting developers.apple.com!

After downloading, install the package. You can install it next to your shinier XCode 4 by selecting an alternate destination on the ‘Installation Type’ screen. I installed it in /Developer324

I created this short script to build CM7. It replaces the guide’s ‘Compile’ section:

cd /Volumes/CyanogenModWorkspace/android/system/  
sudo mv /Developer /Developer.new  
sudo mv /Developer324 /Developer  
time make -j`sysctl -an hw.logicalcpu` bacon  
sudo mv /Developer /Developer324  
sudo mv /Developer.new /Developer

If you build now, you will, however, get another error:

ASSERTION FAILURE external/elfcopy/elfcopy.c:932: [ranges[i].start >= last_end]

This fix is much faster: open external/elfcopy/elfcopy.c and add this before line 928:

sort_ranges(section_ranges);

Then…oh, wait. That’s it. Run the make script and you’re done.

Comments powered by Talkyard.

Google+ on your desktop/in Safari + user script, just working

Tooredo: a friendlier Toodledo user interface -- Public Beta

2022 The Nexus