12 Maja 2025 15:20:18
Nawigacja
· Strona Główna
· Forum

· Tomato by Shibby
· FreshTomato


Wątki na forum
Najnowsze dyskusje
· Promise VessRAID 184...
· r6400v2 bład przy u...
· drukarka drukuje tyl...
· [S] sprzęt sieciowy...
· Router do światłow...
· [sprzedam] Asus RT-A...
· Netia IPv6
· Multiroom N z wykorz...
· [S] Ubiquity Edgerou...
· [MOD] FreshTomato-AR...
· Nowe routery: UX, UC...
· asus rt-ax86u pro z ...
· Zmiana OpenVPN na wi...
· [S]UBIQUITI EdgeRout...
· Zaawansowana konfigu...
· ByPass VPN dla wybra...
· [MOD] FreshTomato-MI...
· Komputer Serwer
· Ciągle rozłączani...
· Wersje Freshtomato d...
Najpopularniejsze obecnie wątki
· r6400v2 bład prz... [16]
· Promise VessRAID ... [2]
Ankieta
Jaki procesor posiada twój router?

Broadcom MIPSEL
Broadcom MIPSEL
36% [152 głosów]

Broadcom ARM
Broadcom ARM
52% [219 głosów]

Atheros
Atheros
5% [22 głosów]

Marvell
Marvell
1% [4 głosów]

Ralink
Ralink
1% [3 głosów]

Intel/AMD/VIA
Intel/AMD/VIA
1% [5 głosów]

Żaden z powyższych
Żaden z powyższych
4% [15 głosów]

Ogółem głosów: 420
Musisz zalogować się, aby móc zagłosować.
Rozpoczęto: 02/02/2015 09:38
Twoje IP
18.191.190.40
Zobacz wątek
OpenLinksys » :: OPROGRAMOWANIE :: » Tomato - firmware
 Drukuj wątek
Problem z kompilacją biblioteki FTDI
mackowiakp
Mam router Asus RT-AC68R z podmontowanym do /opt penem 32 GB. Na nim zainstalowane jest entware w tym wszystkie narzędzia do kompilacji programów natywnie na platformę ARMv7

Napisałem program do obsługi modułu opartego na chipie FT245 połączonego przez USB do routera. Program ten skompilowany na Linuxie x86_64 pracuje prawidłowo na zwykłym komputerze z Linuxem. Całość wymagała doinstalowania biblioteki dostarczanej przez producenta. Producent dostarcza wspomniane biblioteki na różne platformy, w tym na ARMv7 w wersji soft i hard float. Na routerze zainstalowałem bibliotekę hard float.
Wspomniane biblioteki znajdują się http://www.ftdichip.com/Drivers/D2XX.htm

Próbuję więc skompilować program, po uprzedniej instalacji na penie bibliotek FTDI, zgodnie z dokumentacją. Niestety po uruchomieniu programu występuje błąd biblioteki.


root@asus:/opt# gcc -Wl,-rpath=/opt/usr/local/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 -L/opt/usr/local/lib -O2 -pipe 
-march=armv7-a -mtune=cortex-a9 -fno-caller-saves -mfloat-abi=soft -l ftd2xx arco.c -o arco
root@asus:/opt# ./arco
./arco: error while loading shared libraries: /opt/usr/local/lib/libftd2xx.so: internal error


Jestem dość nowy jeżeli chodzi o zabawy "w te klocki" ale może coś jest w tym że w opcjach kompilacji używam:


-mfloat-abi=soft


a zainstalowana biblioteka jest hard-float. Nie wiem czy to może być przyczyna więc oczekuję rady Kolegów.
Z góry dziękuję za odpowiedzi !

W załączeniu źródło programu o którym mowa. Jest to program do obsługi modułu firmy ARCO, posiadającego 4 wejścia optoizolowane i 4 wyjścia przekaźnikowe. Idealne do domowego systemu automatyki.

Połączony z 13 wrzesień 2016 08:09:02:
Wypróbowałem różne opcje kompilacji. Aby znaleźć powód błędu, dodałem do opcji kompilacji "-v" czyli verbose. I tak. Kompilacja programu za pomocą polecenia:


gcc -v -Wl,-rpath=/opt/usr/local/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 -L/op/usr/local/lib -O2 -pipe -march=armv7-a -mtune=cortex-a9 -fno-caller-saves -mfloat-abi=soft -l ftd2xx arco.c -o arco


daje wynik:


Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/lto-wrapper
Target: arm-openwrt-linux-gnueabi
Configured with: /media/ware3/Entware-ng.2016.08/build_dir/target-arm_cortex-a9_glibc-2.23_eabi/gcc-5.4.0/configure --target=arm-openwrt-linux --host=arm-openwrt-linux --build=x86_64-linux-gnu --program-prefix= --program-suffix= --prefix=/opt --exec-prefix=/opt --bindir=/opt/bin --sbindir=/opt/sbin --libexecdir=/opt/lib --sysconfdir=/opt/etc --datadir=/opt/share --localstatedir=/opt/var --mandir=/opt/man --infodir=/opt/info --disable-nls --build=x86_64-linux-gnu --host=arm-openwrt-linux-gnueabi --target=arm-openwrt-linux-gnueabi --enable-languages=c,c++ --with-bugurl=https://dev.openwrt.org/ --with-pkgversion='OpenWrt GCC 5.4.0' --enable-shared --enable-__cxa_atexit --with-default-libstdcxx-abi=gcc4-compatible --enable-target-optspace --with-gnu-ld --with-stage1-ldflags='-Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3' --with-boot-ldflags='static-libstdc++ -static-libgcc -Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3' --disable-nls --disable-libsanitizer --disable-libvtv --disable-libcilkrts --disable-libmudflap --disable-multilib --disable-libgomp --disable-libquadmath --disable-libssp --disable-decimal-float --disable-libstdcxx-pch --with-host-libstdcxx=-lstdc++ --prefix=/opt --libexecdir=/opt/lib --with-local-prefix=/opt --with-float=soft --with-default-libstdcxx-abi=gcc4-compatible
Thread model: posix
gcc version 5.4.0 (OpenWrt GCC 5.4.0)
COLLECT_GCC_OPTIONS='-v' '-L/opt/usr/local/lib' '-O2' '-pipe' '-march=armv7-a' '-mtune=cortex-a9' '-fno-caller-saves' '-mfloat-abi=soft' '-o' 'arco' '-mtls-dialect=gnu'
 /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/cc1 -quiet -v -imultilib . -imultiarch arm-linux-gnueabi arco.c -quiet -dumpbase arco.c -march=armv7-a -mtune=cortex-a9 -mfloat-abi=soft -mtls-dialect=gnu -auxbase arco -O2 -version -fno-caller-saves -o - |
 as -v -march=armv7-a -mfloat-abi=soft -meabi=5 -o /opt/tmp/cchRPE4Y.o
GNU assembler version 2.26.1 (arm-openwrt-linux-gnueabi) using BFD version (GNU Binutils) 2.26.1
GNU C11 (OpenWrt GCC 5.4.0) version 5.4.0 (arm-openwrt-linux-gnueabi)
        compiled by GNU C version 5.4.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=31954
ignoring nonexistent directory "/opt/include/arm-linux-gnueabi"
ignoring nonexistent directory "/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/../../../../arm-openwrt-linux-gnueabi/include"
ignoring nonexistent directory "/usr/include/arm-linux-gnueabi"
ignoring nonexistent directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/include
 /opt/include
 /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/include-fixed
End of search list.
GNU C11 (OpenWrt GCC 5.4.0) version 5.4.0 (arm-openwrt-linux-gnueabi)
        compiled by GNU C version 5.4.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=31954
Compiler executable checksum: a589712d81e28a1300ccb0e03d994135
COMPILER_PATH=/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/:/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/:/opt/lib/gcc/arm-openwrt-linux-gnueabi/:/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/:/opt/lib/gcc/arm-openwrt-linux-gnueabi/
LIBRARY_PATH=/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/:/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-L/opt/usr/local/lib' '-O2' '-pipe' '-march=armv7-a' '-mtune=cortex-a9' '-fno-caller-saves' '-mfloat-abi=soft' '-o' 'arco' '-mtls-dialect=gnu'
 /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/collect2 -plugin /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/liblto_plugin.so -plugin-opt=/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/lto-wrapper -plugin-opt=-fresolution=/opt/tmp/ccIMfua6.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o arco /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/crt1.o /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/crti.o /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/crtbegin.o -L/opt/usr/local/lib -L/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0 -L/opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/../../.. -rpath=/opt/usr/local/lib --dynamic-linker=/opt/lib/ld-linux.so.3 -lftd2xx /opt/tmp/cchRPE4Y.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/crtend.o /opt/lib/gcc/arm-openwrt-linux-gnueabi/5.4.0/crtn.o


Co dziwne, jak przyjrzeć się komunikatowi z kompilacji, to w pierwszej częci występuje:


-dynamic-linker /opt/lib/ld-linux.so.3


A w drugiej


-dynamic-linker /lib/ld-linux.so.3


Czyli komunikat pojawiający się po uruchomienu programu czyli:


./arco: error while loading shared libraries: /opt/usr/local/lib/libftd2xx.so: internal error


wydaje się uzasadniony bo bo w katalogu /lib nie ma pliku ld-linux.so.3

Są więc dwie możliwości. Albo popełniam jakiś błąd w wyniku czego wskazywane położenie linkera jest błędne albo trzeba skopiować/linkować plik ld-linux.so.3 do /lib. No tylko że katalog /lib jest na filesystemie read only i nijak nie można tego zrobić.

Zastosowałem też inne wywołanie kompilacji, ściśle według rady Kolegi Steel_Rat, czyli:


gcc -v -Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 -L/opt/lib -O2 -pipe -march=armv7-a -mtune=cortex-a9 -fno-caller-saves -mfloat-abi=soft -l ftd2xx arco.c -o arco


ale wtedy występuje dodatkowo błąd kompilacji:


/opt/bin/ld: cannot find -lftd2xx


i także komunikat z kompilacji, jak w poprzednim przykładzie, pokazuje dwa różne miejsca położenia pliku ld-linux.so.3

Z kolei nie rozumiem tego ostatniego komunikatu bo do zmiennej określającej położenie bibliotek wpisałem wszystkie możliwe lokalizacje. I tak:


root@asus:/opt# echo $LD_LIBRARY_PATH
/lib:/usr/lib:/usr/local/lib:/opt/lib:/opt/usr/lib:/opt/include:/opt/usr/local/lib:/opt/usr/include


Czy ktoś z Kolegów pomoże rozwiązać mi tą zagadkę?
mackowiakp załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.

Edytowany przez mackowiakp dnia 13-09-2016 08:09
UWAGA ! Administrator ma prawo do odmowy instalacji WINDOWS, powołując się na klauzulę sumienia
WARNING ! The administrator has the right to refuse to install WINDOWS, invoking the conscience clause
 
Przejdź do forum
Zaloguj
Wprowadź adres e-mail lub nazwę użytkownika

Hasło



Nie masz jeszcze konta? Zarejestruj się.

Zapomniałeś/aś hasła?
Aktualnie online
· Gości online: 65

· Użytkowników online: 0

· Łącznie użytkowników: 24,126
· Najnowszy użytkownik: goldi111
Czat
Musisz się zalogować, aby opublikować wiadomość.

servee
24-01-2025 18:18
Światłowód + mediakonwenter. Ekranowana skrętka nie jest wymagana, taką sytuację już zastałem. Zamierzam ją wymienić na zwykłą. Da to coś?

shibby
17-01-2025 07:45
a ta skrętka ekranowana o której piszesz to jakiś wkopany przewód do bramy/furtki/kamer
y zewn? Jak tak to jego też przez zabezpieczenie podepnij.

shibby
17-01-2025 07:43
no to pora zabezpieczyć kable LAN zabezpieczeniami przeciwprzepięciow
ymi - tanio nie będzie. Jak przychodzi ci internet? Skrętką czy światłem? Jak skrętką to zacząłbym od tego.

servee
12-01-2025 12:52
Ponownie padły mi wszystkie porty sieciowe w routerze - to już 3-ci w 6 m-cy. Podejrzany to ekranowana, nieuziemiona skrętka - 12mb. Czy jest to możliwe?

dawidt
21-12-2024 01:09
siema Grin

Maniek91PL
06-11-2024 22:37
dzięki !Grin

maxikaaz
29-10-2024 14:27
@Maniek91PL - Administration=> Admin Access, i tam masz "Allow Wireless Access" do zaznaczenia

Maniek91PL
26-10-2024 22:07
siemka! ktoś przypomni co się ustawiało jeśli nie mogę wejść od strony wifi do tomato? od lan działa

overflow2
04-10-2024 17:34
Kupowałem Asusy n10u albo n12d1 ale nie widzę ich, chyba już nie produkują, Chodzi o coś nowego i taniego. Transfery niewielkie.

maxikaaz
04-10-2024 09:38
@overflow2 patrząc po dostępności funkcji w nowych kompilacjach, to chyba nawet WRT54G/GL jeszcze ma OpenVPN, albo jakiś odpowiednik... zależy, na jakie transfery liczysz.

116,743,251 unikalnych wizyt