Yükleme Ahududu Pi-Derleyici Çapraz
Çapraz derleme Ahududu Pi için Ubuntu benim makine üzerinde çalışan almak için çalışıyorum.
İlk girişimi sırasında Ubuntu repo mevcuttur-kol linux-gnueabi derleyici, kullanıyordum. Bu çalışma var. Bütün bağımlılıklar oluşturmak ve cmake proje ile çapraz derleyici kullanmayı başardı.
Ancak, hf sürümünü kullanıyor olmam gerektiğine inanıyorum, arm-linux-gnueabihf geçtim. O zaman bu armv6 olduğu için Ahududu Pi ile çalışmıyor fark ettim.
Bazı Googling sonra, ben daha sonra GitHub gelen önceden tasarlanmış araç zinciri bulundu: https://github.com/raspberrypi/tools.
Araç zinciri, ama o gerçekten ne istediğini bilmiyorum "yükle". indirdim Benim ev dizini dosyaları inceledim. Dizin yapısı bu gibi görünüyor:
/gcc-linearo-arm-linux-gnueabihf-raspbian
/arm-linux-gnueabihf
/bin
(contains g , gcc, etc)
/lib
(contains libstdc library)
/bin
(contains arm-linux-gnueabihf-g , arm-linux-gnueabihf-...)
/lib
(gcc lib stuff)
Eğer İÇ bin klasörüne dizin değiştirirsem herhangi bir sorun olmadan terminalden test programı derlemek için mümkün duyuyorum.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-linux-gnueabihf/bin$ g test.cpp -o test
Ben o araçları öneki sürümlerini içeren DIŞ bin klasöründe test programı derlemek için çalıştı.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$
arm-linux-gnueabihf-g test.cpp -o test
Derleyici şimdi kullanmaya çalıştığımda ancak, (iç bin dizini dışarıdan), araç zinciri ile birlikte libstdc paylaşılan kitaplık bulamadı
arm-linux-gnueabihf-gcc: error while loading shared libraries:
libstdc .so.6: cannot open shared object file: No such file or directory.
Ayrıca, bin dizinine gitmek zorunda kalmadan derleyici kullanmak mümkün olmak istiyorum. Benim yolum DIŞ bin dizin öneki sürümlerini istiyorum beri) hem lib dizinleri eklemeye çalıştım:
export PATH=$PATH:~/tools/.../bin
export PATH=$PATH:~/tools/.../lib
export PATH=$PATH:~/tools/.../.../lib
Ancak, bu aynı hataya yol açar. Nasıl "" araç zinciri yani ben gibi her yerden araç zinciri kullanabilirim, bu çapraz Derleyiciler Ubuntu repo kullandığımda mı? yüklemeli miyim
CEVAP
Takip edilmesi kolay olur senin için bir öğretici olarak yazmaya çalışacağım.
Ön gereksinimleri
Başlamadan önce aşağıdaki yüklü olduğundan emin olun:
apt-get install git rsync cmake ia32-libs
Bir Pasta derleme çapraz hadi!
Start ile ev dizini içinde bir klasöre atmak denir raspberrypi
.
Bu klasöre gir ve yukarıda bahsedilen klasör: TÜM araçlar aşağı çekin
git clone git://github.com/raspberrypi/tools.git
3 olanlar varsa okudum yoksa gcc-linaro-arm-linux-gnueabihf-raspbian
, aşağıdaki yanlış kullanmak istedim.
Ev dizininize gidin ve ekleyin:
export PATH=$PATH:$HOME/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
dosya sonuna adında ~/.bashrc
Şimdi de çıkış yapıp (yani terminal oturumu yeniden başlatın) tekrar giriş veya terminal . ~/.bashrc
mevcut terminal oturumu PATH
ayrıca almak.
Şimdi, 25* *derleyici erişebildiğinizi doğrulayın. Böyle bir şey almak gerekir:
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/tudhalyas/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.2/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.b
uild/src/gcc-linaro-4.7-2012.08/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-
linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oort61/crosstool-ng/builds/arm-l
inux-gnueabihf-raspbian-linux/install --with-sysroot=/cbuild/slaves/oort61/crosstool-ng/builds/
arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c ,fo
rtran --disable-multilib --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=
hard --with-pkgversion='crosstool-NG linaro-1.13.1 bzr2458 - Linaro GCC 2012.08' --with-bugurl=
https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgom
p --enable-libssp --with-gmp=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-rasp
bian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oort61/crosstool-
ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc
=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-
gnueabihf/build/static --with-ppl=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf
-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oort61/cros
stool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --wi
th-libelf=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/a
rm-linux-gnueabihf/build/static --with-host-libstdcxx='-L/cbuild/slaves/oort61/crosstool-ng/bui
lds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static/lib -lpwl' --ena
ble-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gol
d --with-local-prefix=/cbuild/slaves/oort61/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-li
nux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1 bzr2458 - Linaro GCC 2012.08
)
Ama hey! Ve libs hala işe yaramazsa yaptım!
Henüz işimiz bitmedi! Şimdiye kadar, sadece temel yaptık.
raspberrypi
klasörünüzde bir klasör rootfs
denir.
Şimdi bu yeni oluşturulan klasöre /lib
/usr
tüm dizin kopyalamak gerekir. Ben genellikle rpı görüntüyü getirmek ve rsync üzerinden kopyalayın:
rsync -rl --delete-after --safe-links pi@192.168.1.PI:/{lib,usr} $HOME/raspberrypi/rootfs
192.168.1.PI
senin Ahududu Pi IP tarafından değiştirilir.
Şimdi, cmake
bir yapılandırma dosyası yazmak gerekiyor. Favori editörü ve Ekle ~/home/raspberrypi/pi.cmake
aşağıdaki açın:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g )
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/raspberrypi/rootfs)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Sadece bu ekstra bayrağı ekleyerek cmake
programlarınızı derlemek gerekir şimdi: -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake
.
cmake hello world bir örnek kullanma
git clone https://github.com/jameskbride/cmake-hello-world.git
cd cmake-hello-world
mkdir build
cd build
cmake -D CMAKE_TOOLCHAIN_FILE=$HOME/raspberrypi/pi.cmake ../
make
scp CMakeHelloWorld pi@192.168.1.PI:/home/pi/
ssh pi@192.168.1.PI ./CMakeHelloWorld
Çapraz tarayıcı özel yükleme düğmesi d...
GCC içinde Ahududu Pi için çapraz derl...
ember.js (tembel yükleme)ile sonsuz ka...
Operatör C ile Aşırı yükleme# Uzatma Y...
Yükleme Python 2.7.3 ile 64 bit Window...