Alta:
Compilez
hiawatha pentru router. Foloseste CMAKE. Dupa mult chin cu cross-compilatorul Asus (a se citi "a lu' peste"), a mers compilat.
Din motive de root read-only, pe router trebuie instalat in
/opt/bin,
/opt/etc,
/opt/lib, etc.
Toolchain-ul este in
/build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/
Sysroot este in
/build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/sysroot
Nu stiu daca am inteles prea bine cum e cu staging dir si system root, dar intentia mea este:
- sa puna output-ul compilarii in
/build/hiawatha/staging/
- sa instaleze programul cu toate fisierele lui (bin, lib, etc, man) in directoarele corespunzatoare din
/build/hiawatha/pkgroot/
- impachetat din pkgroot cu toate directoarele si despachetat pe router in /opt, sa mearga fara alte interventii
Asadar am folosit:
Code:
rm -rf hiawatha-10.10
tar -xvf hiawatha-10.10.tar.gz
PATH=/build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin:$PATH
STAGING_DIR=/build/hiawatha/staging
LD_LIBRARY_PATH=/build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/lib
cd hiawatha-10.10
cmake \
-DENABLE_CACHE=OFF -DENABLE_DEBUG=OFF -DENABLE_IPV6=OFF -DENABLE_MONITOR=OFF -DENABLE_RPROXY=OFF -DENABLE_TLS=ON -DENABLE_TOMAHAWK=OFF -DENABLE_TOOLKIT=OFF -DENABLE_XSLT=OFF \
-DCMAKE_INSTALL_PREFIX=/opt \
-DCMAKE_TOOLCHAIN_FILE=../cmake.toolchain
make
make install
... unde
cmake.toolchain este:
Code:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 2.6)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_SYSROOT /build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/sysroot)
SET(CMAKE_STAGING_PREFIX /build/hiawatha/staging)
SET(CMAKE_INSTALL_PREFIX /build/hiawatha/pkgroot)
SET(CMAKE_C_COMPILER /build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/arm-brcm-linux-uclibcgnueabi-gcc)
SET(CMAKE_CXX_COMPILER /build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/arm-brcm-linux-uclibcgnueabi-g++)
SET(CMAKE_FIND_ROOT_PATH /build/rtn18u/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
Dar:
1) make pune toate executabilele si libs in ./staging, deci OK pana aici...
2) make install nu muta nimic in ./pkgroot
3) make install vrea sa puna toate celelalte fisiere (etc, man, exemple, scripturi) in /opt/ (adica in root pe host!). Daca ii dau voie, se finalizeaza cu succes.
4) Mutat de pe unde le pune, pe router in /opt, da eroare ca nu-si gaseste .so-urile. Carevasazica le-a link-uit in /lib, nu /opt/lib.
Cum se rezolva abrambureala asta?
PS: Cu acelasi toolchain am obtinut mtd-utils functional, dar am impresia ca ala e static.