Právě teď, když pracuji na svém notebooku (amd64), už dokážu zkompilovat kód přes SSH na BeagleBone (armhf).
O co se teď pokouším, je možnost použít k ladění kódu jakékoli IDE (Code::Blocks, KDevelop nebo Qt Creator).
Tak mě napadlo spustit gdbserver
na BeagleBone a připojení k němu, ale při odpovědi mi to dává chybu neočekávané hodnoty. Četl jsem o tom a zdá se, že potřebuji lokálně vytvořit spustitelný soubor armhf pro gdb
zpracovat. Ale myslím, že to také potřebuje gdb
orientované na armhf vytvořeno pro amd64, tak jsem zkusil nainstalovat crossbuild-essential-armhf
. Za tímto účelem jsem přidal architekturu armhf pomocí dpkg --add-architecture armhf
, ale pak nemohu provést aktualizaci apt-get. Mám jich spoustu:
Err http://security.ubuntu.com trusty-security/main armhf Packages
404 Not Found [IP: 2001:67c:1562::13 80]
Pokud zkontroluji repozitáře, skutečně nikde nemají armhf.
Takže, co dělám špatně? Je to také správný způsob vzdáleného ladění s jinou architekturou, nebo existuje nějaký lepší způsob, jak to udělat?
Přijatá odpověď:
Ubuntu používá samostatná úložiště pro armh (tj. http://ports.ubuntu.com/
).
Abyste mohli úspěšně nainstalovat crossbuild-essential-armhf, musíte postupovat podle těchto kroků:
-
spusťte
dpkg --add-architecture armhf
-
zadejte správnou architekturu pro VŠECHNY vaše deb řádky apt v
/etc/apt/sources.list
a/etc/apt/sources.list.d
, například:deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
Všimněte si, že nemá smysl specifikovat oblouk pro řádky deb-src.
3. spusťte apt-get update
4. spusťte apt-get install crossbuild-essential-armhf
Podívejte se na https://wiki.debian.org/Multiarch/HOWTO
Můžete také chtít provést tyto příkazy v chrootu (nebo možná v kontejneru docker), jak je uvedeno v této příručce:Začínáme s MultiArch (armel / armhf) v Ubuntu