

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Solução de problemas de compilação no SDK do produtor de C\$1\$1 para Raspberry Pi
<a name="troubleshoot-rpi"></a>

Se você encontrar um problema de compilação e quiser tentar CMake argumentos diferentes, certifique-se de executar uma compilação limpa. Exclua as `build` pastas `open-source``dependency`, e antes de tentar novamente.

## Crie problemas com o OpenSSL
<a name="troubleshoot-rpi-build"></a>

Se você receber uma saída semelhante à seguinte, isso indica que o OpenSSL detectou incorretamente a arquitetura do sistema.

```
crypto/md5/md5-aarch64.S: Assembler messages:
crypto/md5/md5-aarch64.S:3: Error: unrecognized symbol type ""
crypto/md5/md5-aarch64.S:6: Error: bad instruction `stp x19,x20,[sp,#-80]!'
crypto/md5/md5-aarch64.S:7: Error: bad instruction `stp x21,x22,[sp,#16]'
crypto/md5/md5-aarch64.S:8: Error: bad instruction `stp x23,x24,[sp,#32]'
crypto/md5/md5-aarch64.S:9: Error: bad instruction `stp x25,x26,[sp,#48]'
```

Neste exemplo, ele está tentando criar uma versão de 64 bits (`linux-aarch64`) quando esse Raspberry Pi é na verdade 32 bits. Alguns dispositivos Raspberry Pi têm um kernel de 64 bits, mas um espaço de usuário de 32 bits.

Determine para qual arquitetura o OpenSSL está tentando construir. Você pode encontrar a linha de registro durante a `configure` etapa do OpenSSL:

```
[ 33%] Performing update step for 'project_libopenssl'
-- Already at requested tag: OpenSSL_1_1_1t
[ 44%] No patch step for 'project_libopenssl'
[ 55%] Performing configure step for 'project_libopenssl'
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1t (0x1010114fL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile
```

Verifique a arquitetura do seu sistema:
+ Revise o número de bits do kernel: execute `uname -m`
+ Revise a quantidade de bits do espaço do usuário: execute `getconf LONG_BIT`

Você também pode revisar as informações da CPU com `cat /proc/cpuinfo` nossos `lscpu` comandos. 

**Resolução:**

Para resolver esse problema, adicione o seguinte CMake argumento ao compilar, para garantir que o OpenSSL seja compilado corretamente para a arquitetura ARM de 32 bits:

```
-DBUILD_OPENSSL_PLATFORM=linux-armv4 
```

## Solucionar problemas `kvssink` de carregamento no GStreamer
<a name="troubleshoot-rpi-kvssink"></a>

Confirme `GST_PLUGIN_PATH`

Certifique-se de que a variável de `GST_PLUGIN_PATH` ambiente em sua sessão de shell atual aponte para o diretório que contém`kvssink`. As variáveis de ambiente são específicas da sessão, então você precisará defini-las para cada nova sessão. Para tornar essa alteração permanente, consulte “Atualize o script de inicialização do shell para incluir a configuração da variável de ambiente GST\$1PLUGIN\$1PATH”. 

**Erro: Não é possível abrir o arquivo de objeto compartilhado: Esse arquivo ou diretório não existe**

Se você encontrar o erro`Cannot open shared object file: No such file or directory`, execute o seguinte comando:

```
gst-inspect-1.0 /path/to/libgstkvssink.so
```

Se você receber a seguinte saída, isso indica que o vinculador dinâmico não consegue localizar as bibliotecas necessárias para`kvssink`. Isso geralmente ocorre devido a:
+ Mudando `kvssink` para um local diferente de onde foi construído.
+ Compilação cruzada para a arquitetura de CPU errada.
+ Falta uma dependência necessária.

**Saída**:

```
WARNING: erroneous pipeline: no element "kvssink"
error while loading shared libraries: libcproducer.so: cannot open shared object file: No such file or directory
```

**Resolução:**

Para **bibliotecas movidas**, adicione o diretório que contém as bibliotecas ausentes `LD_LIBRARY_PATH` a.

No diretório raiz do repositório original, você pode localizar a biblioteca ausente usando o `find` utilitário. No terminal, digite: 

```
find . -name "*libcproducer*" 
```

**Saída**:

```
./build/dependency/libkvscproducer/kvscproducer-src/libcproducer.so
```

O separador de caminho de arquivo em dispositivos Linux é`:`. O comando abaixo acrescenta um novo caminho de pasta à variável de `LD_LIBRARY_PATH` ambiente existente, preservando todos os valores anteriores. 

No seu terminal, digite:

```
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/build/dependency/libkvscproducer/kvscproducer-src
```

**Importante**  
As variáveis de ambiente são específicas da sessão. Para manter as alterações nas sessões, modifique o script de inicialização do seu shell.

Talvez você também precise adicionar o `open-source/local/lib` ao seu`$LD_LIBRARY_PATH`.

**Erro:. /path/to/libcproducer.so.1:** cabeçalho ELF inválido

Se você receber esse erro ao carregar **bibliotecas compartilhadas**, pode ser devido a links simbólicos quebrados (`symlinks`). Os links simbólicos podem ser interrompidos se o sistema operacional da máquina host não corresponder ao da máquina alvo. Por exemplo, compilação cruzada em um MacBook para um Raspberry Pi.

Outra causa possível é que os binários criados eram para a arquitetura errada. Por exemplo, se os binários foram criados para x86 (o Raspberry Pi usa ARM). CPUs

Navegue até o local da biblioteca especificado no erro e digite: `ls -la` para inspecionar a biblioteca`symlinks`.

**Resposta:**

```
drwxr-xr-x  16 me  staff      512 Sep 10 17:16 .
drwxr-xr-x   7 me  staff      224 Jan  6 23:46 ..
drwxr-xr-x   4 me  staff      128 Sep 10 17:16 engines-1.1
-rwxr-xr-x   1 me  staff  2294496 Sep 10 17:16 libcrypto.1.1.so
-rw-r--r--   1 me  staff  4002848 Sep 10 17:16 libcrypto.a
lrwxr-xr-x   1 me  staff       19 Sep 10 17:16 libcrypto.so -> libcrypto.1.1.so
-rwxr-xr-x   1 me  staff   631176 Sep 10 17:12 liblog4cplus-2.0.3.so
lrwxr-xr-x   1 me  staff       24 Sep 10 17:12 liblog4cplus.so -> liblog4cplus-2.0.3.so
-rwxr-xr-x   1 me  staff     1012 Sep 10 17:12 liblog4cplus.a
-rwxr-xr-x   1 me  staff   694328 Sep 10 17:12 liblog4cplusU-2.0.3.so
lrwxr-xr-x   1 me  staff       25 Sep 10 17:12 liblog4cplusU.dylib -> liblog4cplusU-2.0.3.so
-rwxr-xr-x   1 me  staff     1017 Sep 10 17:12 liblog4cplusU.a
-rwxr-xr-x   1 me  staff   536416 Sep 10 17:16 libssl.1.1.so
-rw-r--r--   1 me  staff   795184 Sep 10 17:16 libssl.a
lrwxr-xr-x   1 me  staff       16 Sep 10 17:16 libssl.so -> libssl.1.1.so
drwxr-xr-x   6 me  staff      192 Sep 10 17:16 pkgconfig
```

No exemplo de saída acima, `symlinks` eles não estão quebrados. Broken `symlinks` não terá flechas apontando para seus alvos.

**Resolução:**

Há duas opções para corrigir os links simbólicos:
+ **Recomendado:** Recrie o `symlink` com o `ln` comando. Tipo:

  ```
  ln -s /path/to/actual/library /path/to/symlink
  ```
+ Copie o arquivo real da biblioteca e renomeie-o para corresponder ao`symlink`.
**nota**  
Essa opção leva ao aumento do uso do armazenamento. 

Como prática recomendada, compile no mesmo sistema operacional usando ferramentas como o Docker para evitar problemas de compilação cruzada. 

**Dependências ausentes:**

Se o nome da biblioteca ausente começar com`libkvs`, consulte a seção “bibliotecas movidas” acima para instalar as bibliotecas do Kinesis Video Streams do dispositivo host para o dispositivo de destino. 

Caso contrário, siga [Pré-requisitos de instalação do software](producersdk-cpp-rpi-software.md) para garantir que todos os pré-requisitos do software de código aberto estejam instalados no dispositivo de destino.