Trata-se de confundir dois SDK 1 diferentes. getopt_long existe em QNX6.6 . Mas a versão libc
no Playbook não tem isso , pois tem uma versão anterior de / proc . O erro nunca teria acontecido se eu tivesse instalado o SDK nativo do SO do Playbook v2.1.0 em vez de seguir cegamente o link no projeto, que instalará o Native SDK v10.3 com o IDE para BB10 . As informações do projeto são claras, mas o link não está vinculado ao SDK correto. Então, o que acabei fazendo foram os binários mais prováveis feitos para rodar no BB10, mas em um dispositivo que não tem exatamente a mesma infraestrutura. Curiosamente, algo como grep
funcionaria, mas se recusou a responder a --version
, ou seja, uma opção longa quando compilado com o BB SDK ...
Mas com o SDK adequado, não há problema. A maioria dos alvos foi recompilada 2 . Isso tudo está acontecendo em Arch Linux x84_64 onde multilib repositórios foram habilitados (e muitos pacotes lib32 - foram extraídos). Este é o bloco de configuração build.sh
que usei para gcc
3 :
CONFIGURE_CMD="$EXECDIR/gcc/configure
--host=$PBHOSTARCH
--build=$PBBUILDARCH
--target=$PBTARGETARCH
--srcdir=$EXECDIR/gcc
--with-as=ntoarm-as
--with-ld=ntoarm-ld
--with-sysroot=$BBTOOLS/target/qnx6/
--disable-werror
--prefix=$DESTDIR
--exec-prefix=$DESTDIR
--enable-cheaders=c
--enable-languages=c
--enable-threads=posix
--disable-nls
--disable-libssp
--disable-tls
--disable-libstdcxx-pch
--disable-newlib-supplied-syscalls
--enable-libmudflap
--enable-__cxa_atexit
--with-gxx-include-dir=$BBTOOLS/target/qnx6/usr/include
--enable-shared
--disable-subdir-texinfo
--enable-cross-compile
--enable-shared
CC=$PBTARGETARCH-gcc
CFLAGS='-march=armv7-a -marm -fno-strict-aliasing -mtune=cortex-a9 -O2 -pipe -fomit-frame-pointer -mlittle-endian'
LDFLAGS='-Wl,-s '
MAKEOPTS="-j5"
AUTOMAKE=automake-1.11: AUTOCONF=: AUTOHEADER=: AUTORECONF=: ACLOCAL=aclocal-1.11: MAKEINFO=makeinfo-4.13a
Tanto o coreutils
como o gcc
trabalham e aliasse ls
e grep
com a opção --color
:
Porfim,umshellfuncionalcomtr
nomeuPlaybook,queofereceumavisãorarasobre
1. Obrigado a Ryan Mansfield @ Foundry27 pelo heads up e @Emmanuel pela info!
2. Destinos excluídos: file
, man
, ruby
, findutils
. O arquivo resultante era 80Mib e o servidor ruby
webrick foi usado para implantar como pretendido.
3. ... para ambos gcc
e coreutils
(adicionando aos padrões no último caso). Não está claro se todas as opções são necessárias ou mesmo recomendadas. Cada destino pode ser criado individualmente, iniciando o script build.sh
no diretório bootstrap/target
apropriado, por exemplo, bootstrap/gcc/build.sh
. O ambiente de criação ( bbndk-env.sh
) deve ter sido originado uma vez pelo script top build.sh global usando a opção -b
, ou seja, build.sh -b /path/to/bbndk-2.10
. As origens são buscadas nos diretórios work/target
onde elas são construídas. Se uma compilação for bem-sucedida e nenhuma opção for fornecida (consulte lib.sh
no diretório raiz do projeto), ela será incluída na estrutura de diretório pbhome
que será compactada em um archive (que será implementado em seu diretório $ HOME no dispositivo rodando BGShell ). Observe também a referência a Darwin em lib.sh
, que mudei para x86_64 no meu caso. Caso contrário, nada foi alterado a partir da configuração original do projeto, por exemplo, arm-unknown-nto-qnx6.5.0eabi
(em oposição a usar a versão 8.0.0 com o SDK BB10.3, como no Q.). Por isso, é muito fácil compilar uma vez que eliminamos os poucos alvos problemáticos.