Forum » Programiranje » OpenWRT cross-compile programa
OpenWRT cross-compile programa
PcPostar ::
Zivjo!
Iščem pomoč pri prevajanju programa za OpeWRT.
Ne rabim naredit package, ampak navaden binary program. Imam c_source_koda.c, ki bi jo rad skompjalal za router. To je en program, ki mi skrbi za enko komunikacijo preko serijskega porta na mojem routerju.
Na routerju imam nameščen ATTITUDE ADJUSTMENT (12.09-rc1, r34185).
http://downloads.openwrt.org/attitude_a...
Z zgornjega linka sem prenesel FW za router: openwrt-ar71xx-generic-tl-wr741nd-v1-jffs2-sysupgrade.bin
In pa Toolchain za prevajanje: OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
Ali je pomembno, kam dam moj source.c in kako to kompajlam...
A ni to tako, da samo
Iščem pomoč pri prevajanju programa za OpeWRT.
Ne rabim naredit package, ampak navaden binary program. Imam c_source_koda.c, ki bi jo rad skompjalal za router. To je en program, ki mi skrbi za enko komunikacijo preko serijskega porta na mojem routerju.
Na routerju imam nameščen ATTITUDE ADJUSTMENT (12.09-rc1, r34185).
http://downloads.openwrt.org/attitude_a...
Z zgornjega linka sem prenesel FW za router: openwrt-ar71xx-generic-tl-wr741nd-v1-jffs2-sysupgrade.bin
In pa Toolchain za prevajanje: OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
Ali je pomembno, kam dam moj source.c in kako to kompajlam...
A ni to tako, da samo
poženem mips-openwrt-linux-uclibc-gcc, ki je pač znotraj toolchain-a?
______________
VKLOP!!!
VKLOP!!!
techfreak :) ::
Sam sem se kar nekaj časa zafrkaval s tem in na koncu ugotovil da tole deluje brez težav:
1.) download trunk verzije OpenWRT (tudi toolchain bi verjetno moral zadostovati, ampak sem imel težave)
2.) nastavitev z makeconfig
3.) make V=99
4.) izdelava package-a (osebno ga ne potrebujem, OpenWRT pa ga ima rad)
Struktura datotek:
/trunk/package/your_package <- mapa paketa
/trunk/package/your_package/Makefile (zamenjaj heating_controller z your_package):
/trunk/package/your_package/src <-- mapa s kodo
/trunk/package/your_package/src/Makefile
/trunk/package/your_package/src/whatever.cpp <- tvoja koda
5.) Ob klicu
bi se ti moral package prevesti in izvedljiva datoteka je na voljo v /trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/your_package.
Načeloma pa ta postopek prevaja kodo na naslednji način:
1.) download trunk verzije OpenWRT (tudi toolchain bi verjetno moral zadostovati, ampak sem imel težave)
2.) nastavitev z makeconfig
3.) make V=99
4.) izdelava package-a (osebno ga ne potrebujem, OpenWRT pa ga ima rad)
Struktura datotek:
/trunk/package/your_package <- mapa paketa
/trunk/package/your_package/Makefile (zamenjaj heating_controller z your_package):
# # Copyright (C) 2006-2010 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=heating_controller PKG_VERSION:=1 PKG_RELEASE:=1 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) PKG_FIXUP:=libtool PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk define Package/heating_controller SECTION:=net CATEGORY:=Network TITLE:=heating_controller #DEPENDS:= +liblua endef define Package/heating_controller/description heating_controller hello world program endef #define Package/heating_controller/conffiles #/etc/heating_controller.conf #endef ##new from nvram example define Build/Prepare mkdir -p $(PKG_BUILD_DIR) $(CP) ./src/* $(PKG_BUILD_DIR)/ endef # uses GNU configure define Package/heating_controller/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/heating_controller $(1)/usr/sbin/ endef $(eval $(call BuildPackage,heating_controller))
/trunk/package/your_package/src <-- mapa s kodo
/trunk/package/your_package/src/Makefile
LDLIBS = -lpthread hello: #OPENWRT $(CXX) $(LDFLAGS) *.cpp $(LDLIBS) -o heating_controller # remove object files and executable when user executes "make clean" clean: rm *.o heating_controller
/trunk/package/your_package/src/whatever.cpp <- tvoja koda
5.) Ob klicu
make package/your_package/build V=99
bi se ti moral package prevesti in izvedljiva datoteka je na voljo v /trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/your_package.
Načeloma pa ta postopek prevaja kodo na naslednji način:
mips-openwrt-linux-uclibc-g++ -L/home/dejan/openwrt/trunk/staging_dir/target-mips_r2_uClibc-0.9.33.2/usr/lib -L/home/dejan/openwrt/trunk/staging_dir/target-mips_r2_uClibc-0.9.33.2/lib -L/home/dejan/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/usr/lib -L/home/dejan/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/lib *.cpp -lpthread -o heating_controller
Zgodovina sprememb…
- spremenil: techfreak :) ()
PcPostar ::
@techfreak :) Ful hvala za odgovor, tale simpel cross-compile me je res ubil, skor.
Zdaj sem po 2h dneh le naštudiral, kako se to najbl simpel naredi in bi rad z ostalimi delil:
Recimo, da bi radi prevedeli "koda.c" v "program".
Prenesete si lahko samo Toolchain od pripadajočega openwrt-ja. Ne potrebujete celotnega sourcekoda.
Potem v terminalu pozenete ukaz, ki pove, kam ste skopirali Toolchain:
Za prevajanje (compile) potem poženete tole:
Kjer pac ustrezno spremenite poti in imena kode in ime output-a.
Ja, za compile uporabljam linux.
Ce pa vas zanimajo podorobnosti, pa vprašajte.
Sam sem si s tem cross-compile-om razbijal glavo kr neki časa.
Aja, pa še to - nikakor ne delajte nobenega compajla kot root.
Zdaj sem po 2h dneh le naštudiral, kako se to najbl simpel naredi in bi rad z ostalimi delil:
Recimo, da bi radi prevedeli "koda.c" v "program".
Prenesete si lahko samo Toolchain od pripadajočega openwrt-ja. Ne potrebujete celotnega sourcekoda.
Potem v terminalu pozenete ukaz, ki pove, kam ste skopirali Toolchain:
export STAGING_DIR=/home/jordan/wr741nd/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2
Za prevajanje (compile) potem poženete tole:
/home/jordan/wr741nd/OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc koda.c -o output_file_name
Kjer pac ustrezno spremenite poti in imena kode in ime output-a.
Ja, za compile uporabljam linux.
Ce pa vas zanimajo podorobnosti, pa vprašajte.
Sam sem si s tem cross-compile-om razbijal glavo kr neki časa.
Aja, pa še to - nikakor ne delajte nobenega compajla kot root.
______________
VKLOP!!!
VKLOP!!!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | problem innbox-router-udpxy?Oddelek: Omrežja in internet | 4810 (4012) | Daniel |
» | Resna ranljivost v GNU C knjižniciOddelek: Novice / Varnost | 13899 (10709) | Verni |
» | Crosscompiling Gnuradia za RPiOddelek: Operacijski sistemi | 1583 (1429) | poweroff |
» | Linux za MIPSOddelek: Operacijski sistemi | 1351 (1208) | čuhalev |
» | Šest velikanov ustanovilo Linaro za pomoč LinuxuOddelek: Novice / Nakupi / združitve / propadi | 6192 (4006) | Icematxyz |