awslabs / awslabs/aws-lambda-cpp
Undefined symbol errors when consuming the library as shared/dynamic
- 主要语言
- C++
- 星标
- 465
- 派生
- 98
- 平均合并
- 12 小时 47 分钟
- 30 天内合并 PR
- 3
描述
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")))`
贡献指南
调研方向
Start with the visibility setting at CMakeLists.txt#L77 and reproduce the undefined-symbol errors when consuming the library as a shared object. Compare the listed visibility approaches and confirm that the chosen change preserves static-library use while exposing the symbols required by shared-library consumers.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- cmake, cpp
- 领域
- build-system
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 35/100