[英]Having trouble linking to a static library with GCC
我正在使用glfw
進行一個大項目,但我一直在嘗試使用 gcc 鏈接到 static 庫,因此這個玩具示例受到了阻礙。 我不知道為什么我在這么簡單的事情上遇到這么多麻煩。
這是我的源代碼的范圍:
#include <stdio.h>
#include <ft2build.h>
#include FT_FREETYPE_H
int main(){
FT_Library ft;
if (FT_Init_FreeType(&ft))
{
printf("ERROR::FREETYPE: Could not init FreeType Library\n");
}
FT_Face face;
if (FT_New_Face(ft, "fonts/arial.ttf", 0, &face))
{
printf("ERROR::FREETYPE: Failed to load font\n");
}
return 0;
}
我正在運行 Linux Mint。 我下載了 FreeType 庫並使用 CMake 和我的 GCC 版本構建它。 libfretype.a
文件位於名為junk
的子目錄中。 標頭位於名為include
的子目錄中。
我們用以下代碼編譯它:
gcc -Wall -Wextra -g -v -Iinclude -Ljunk vex.c -lfreetype -o vex
我得到了大量的錯誤,比如sfnt.c:(.text+0x218): undefined reference to 'png_get_error_ptr'
。
提前感謝您告訴我我犯的愚蠢錯誤。
這基本上意味着缺少 function png_get_error_ptr
的實現。 因此,編譯器無法生成可執行文件,因為缺少某些代碼。
function png_get_error_ptr
在名為libpng
的庫中實現。 有時,某些庫對另一個項目有一些依賴項,在一般情況下,您需要將所有依賴項包含到您的構建中以解決linker errors
。
您需要在 linker 中包含這些庫:
gcc -Wall -Wextra -g -v -Iinclude -Ljunk vex.c -lfreetype -lpng -lz -o vex
^ ^
-lz
是與zlib
鏈接,因為如果我沒記錯的話, libpng
依賴於zlib
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.