【发布时间】:2022-11-18 06:38:42
【问题描述】:
xnec2c 的用户尝试使用 clang 在 OSX 上构建并遇到此错误:
gcc --pedantic -Wall -std=gnu11 -O2 -g -Wformat -Werror=format-security -fpie -Wno-overlength-strings -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-honor-nans -fno-signed-zeros -fno-math-errno -Wl,--export-dynamic -Wl,--as-needed -o xnec2c main.o mathlib.o measurements.o interface.o callbacks.o console.o callback_func.o calculations.o cmnd_edit.o geom_edit.o gnuplot.o draw.o draw_structure.o draw_radiation.o fields.o fork.o geometry.o ground.o xnec2c.o input.o matrix.o utils.o nec2_model.o network.o optimize.o plot_freqdata.o radiation.o rc_config.o shared.o somnec.o xnec2c-resources.o -L/opt/local/lib -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -lpthread -lm
ld: unknown option: --export-dynamic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(仅供参考:GTK Builder 需要导出动态链接标志。)
This discussion 建议将双破折号设为单破折号:
-AM_LDFLAGS = -Wl,--export-dynamic
+AM_LDFLAGS = -Wl,-export-dynamic
然而用户发现,实际上,它需要一个破折号和一个下划线(也许是still having trouble that could be related,但至少ld停止了对这个选项的咆哮):
-AM_LDFLAGS = -Wl,--export-dynamic
+AM_LDFLAGS = -Wl,-export_dynamic
问题:
- 单破折号
-Wl,-export-dynamic是否在 GCC 和 Clang 中都有效? -
-Wl,-export_dynamic下划线版本是怎么回事? - 该选项与旧(和新)版本的 GCC/Clang 堆栈的兼容性如何?
- 其他注意事项或最佳实践?
【问题讨论】:
标签: gcc clang ld dynamic-linking ldflags