如何使用 GEOS 库编译程序
How to compile a program with GEOS library
我编写了一个小的 C 程序来访问 libgeos (https://github.com/libgeos/geos) 函数。
#include <stdio.h>
#include "geos_c.h"
int main()
{
printf("Test");
GEOSGeometry *inputGeom = GEOSGeomFromWKT("MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))");
return 0;
}
但是当我尝试编译它时编译器给我一个错误。
ab@abc-pc:~/learn-c$ gcc geos_test.c
/tmp/ccugTUqF.o: In function `main':
geos_test.c:(.text+0x21): undefined reference to `GEOSGeomFromWKT'
collect2: error: ld returned 1 exit status
似乎 linker 未能 link libgeos。如果有人可以帮助我解决这个问题,我将不胜感激,因为我是 C 生态系统的新手。
来自github doco:
您需要 link 使用 libgeos_c.a
库,例如:
gcc -g -Wall geos_test.c -o geos_test -lgeos_c
(即命令行最后一项)
这会生成一个名为 geos_test
的可执行文件,其中包含调试信息。
我编写了一个小的 C 程序来访问 libgeos (https://github.com/libgeos/geos) 函数。
#include <stdio.h>
#include "geos_c.h"
int main()
{
printf("Test");
GEOSGeometry *inputGeom = GEOSGeomFromWKT("MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))");
return 0;
}
但是当我尝试编译它时编译器给我一个错误。
ab@abc-pc:~/learn-c$ gcc geos_test.c
/tmp/ccugTUqF.o: In function `main':
geos_test.c:(.text+0x21): undefined reference to `GEOSGeomFromWKT'
collect2: error: ld returned 1 exit status
似乎 linker 未能 link libgeos。如果有人可以帮助我解决这个问题,我将不胜感激,因为我是 C 生态系统的新手。
来自github doco:
您需要 link 使用 libgeos_c.a
库,例如:
gcc -g -Wall geos_test.c -o geos_test -lgeos_c
(即命令行最后一项)
这会生成一个名为 geos_test
的可执行文件,其中包含调试信息。