awslabs / awslabs/aws-lambda-cpp
Undefined symbol errors when consuming the library as shared/dynamic
- Linguagem predominante
- C++
- Estrelas
- 465
- Forks
- 98
- Merge médio
- 12h 47min
- PRs com merge (30d)
- 3
Descrição
The `"-fvisibility=hidden"` (see [CMakeLists.txt#L77](https://github.com/awslabs/aws-lambda-cpp/blob/master/CMakeLists.txt#L77)) in `CMakeLists.txt` causes undefined symbols errors when using this library as shared object.
It's not a problem when using it as a static library because visibility settings doesn't affect that by design.
There are multiple solutions for this problem:
1. Just remove `"-fvisibility=hidden"`. We are currently using this approach as a workaround because we currently don't have many symbols to be considered private, this may be a viable option.
2. Keep `"-fvisibility=hidden"` and manually annotate symbols intended to be public with: `__attribute__((visibility("default")))`, however, this will require a significant amount of effort.
3. Replace `"-fvisibility=hidden"` with `"-fvisibility=default"` and manually annotate symbols intended to be private with `__attribute__((visibility("hidden")))`
Guia de contribuição
Direção de pesquisa
Comece pela configuração de visibilidade em CMakeLists.txt#L77 e reproduza os erros de símbolos indefinidos ao consumir a biblioteca como um shared object. Compare as abordagens de visibilidade listadas e confirme que a alteração escolhida preserva o uso como biblioteca estática, expondo os símbolos exigidos pelos consumidores da biblioteca compartilhada.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- cmake, cpp
- Domínio
- build-system
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Precisa de esclarecimento
- Facilidade para iniciantes
- 35/100