linux - 如何使用 Premake5 链接已编译的 FreeType 库?
问题描述
我有以下 lua 脚本来编译并链接到我的项目 FreeType 库:
project "freetype"
kind "StaticLib"
language "C"
staticruntime "on"
warnings "off"
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
files
{
"src/autofit/autofit.c",
"src/bdf/bdf.c",
"src/cff/cff.c",
"src/base/ftbase.c",
"src/base/ftbitmap.c",
"src/cache/ftcache.c",
"src/base/ftfstype.c",
"src/base/ftgasp.c",
"src/base/ftglyph.c",
"src/gzip/ftgzip.c",
"src/base/ftinit.c",
"src/lzw/ftlzw.c",
"src/base/ftstroke.c",
"src/base/ftsystem.c",
"src/smooth/smooth.c",
"src/base/ftbbox.c",
"src/base/ftmm.c",
"src/base/ftpfr.c",
"src/base/ftsynth.c",
"src/base/fttype1.c",
"src/base/ftwinfnt.c",
"src/base/ftlcdfil.c",
"src/base/ftgxval.c",
"src/base/ftotval.c",
"src/base/ftpatent.c",
"src/pcf/pcf.c",
"src/pfr/pfr.c",
"src/psaux/psaux.c",
"src/pshinter/pshinter.c",
"src/psnames/psmodule.c",
"src/raster/raster.c",
"src/sfnt/sfnt.c",
"src/truetype/truetype.c",
"src/type1/type1.c",
"src/cid/type1cid.c",
"src/type42/type42.c",
"src/winfonts/winfnt.c",
"src/sdf/**.h",
"src/sdf/**.c",
"include/ft2build.h",
"include/freetype/config/ftconfig.h"
}
includedirs
{
"include"
}
defines
{
"_CRT_SECURE_NO_WARNINGS",
"_LIB",
"FT2_BUILD_LIBRARY"
}
filter "system:windows"
systemversion "latest"
files
{
"builds/windows/ftdebug.c"
}
filter "configurations:Debug"
runtime "Debug"
symbols "on"
filter "configurations:Release"
runtime "Release"
optimize "on"
一切都可以正常编译(也可以使用 FreeType),但是当需要链接编译器时会产生以下输出:
usr/bin/ld: vendor/freetype/bin/Debug-linux-x86_64/freetype/libfreetype.a(sdf.o):(.data.rel.ro.local+0x40): multiple definition of `ft_sdf_renderer_class'; vendor/freetype/bin/Debug-linux-x86_64/freetype/libfreetype.a(ftsdfrend.o):(.data.rel.ro+0x0): first defined here
/usr/bin/ld: vendor/freetype/bin/Debug-linux-x86_64/freetype/libfreetype.a(sdf.o):(.data.rel.ro.local+0xc0): multiple definition of `ft_bitmap_sdf_renderer_class'; vendor/freetype/bin/Debug-linux-x86_64/freetype/libfreetype.a(ftsdfrend.o):(.data.rel.ro+0x80): first defined here
/usr/bin/ld: vendor/freetype/bin/Debug-linux-x86_64/freetype/libfreetype.a(smooth.o): in function `gray_convert_glyph_inner':
/home/laptok/Desktop/Snake/Snake/vendor/freetype/src/smooth/ftgrays.c:1609: undefined reference to `FT_Trace_Disable'
/usr/bin/ld: /home/laptok/Desktop/Snake/Snake/vendor/freetype/src/smooth/ftgrays.c:1612: undefined reference to `FT_Trace_Enable'
/usr/bin/ld: ../bin/Debug-linux-x86_64/Snake/Snake: hidden symbol `FT_Trace_Enable' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
此 lua 脚本适用于 Visual Studio 2019 项目生成(它仍会产生类似的输出,但会链接),但它不适用于 Linux。如何修复我的脚本?
解决方案
推荐阅读
- html - puppeter-sharp 中第一页/最后一页/奇数页/偶数页上的不同页眉/页脚
- python - 将列标题更改为行中的值
- docker - Docker & gitlab-ci:在 Dockerfile 中构建应用程序,同时创建工件
- javascript - 条码扫描器输入上的 DOM 重新加载
- python - 为什么索引列表比分配新列表慢?
- python - 需要将文本文件转换为具有适当缩进的 yaml 文件
- java - 如何以编程方式更改android中应用程序的语言?
- java - 更新 java 中的 dynamoDb 项
- python - 为什么构建器找不到 JSON?
- python - TikTokApi 在 Flask 中抛出一个错误,但在它之外工作