首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenWRT上编译gpsd失败

在OpenWRT上编译gpsd失败
EN

Stack Overflow用户
提问于 2019-10-18 07:22:12
回答 1查看 281关注 0票数 0

我正在尝试编译一个使用gps.h的工具,但是每次我的编译似乎都失败了,当它试图链接到libgps时。我收到的错误消息是:

代码语言:javascript
运行
复制
/opt/openwrt-sdk/staging_dir/toolchain-arm_cortex-a9+vfpv3_gcc-7.3.0_musl_eabi/bin/../lib/gcc/arm-openwrt-linux-muslgnueabi/7.3.0/../../../../arm-openwrt-linux-muslgnueabi/bin/ld: cannot find -lgps

这是我正在编译的命令:

代码语言:javascript
运行
复制
arm-openwrt-linux-gcc -o ./bin/eagle src/main.c -I./src -I/opt/openwrt-sdk/staging_dir/target-arm_cortex-a9+vfpv3_musl_eabi/usr/include -static -L/opt/openwrt-sdk/staging_dir/target-arm_cortex-a9+vfpv3_musl_eabi/usr/lib  -lpthread -lgps

供参考的基本代码:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <gps.h>

int main(void)
{
  int rc;
  struct gps_data_t gps_data;
  if ((rc = gps_open("localhost", "2947", &gps_data)) == -1)
  {
    printf("code: %d, reason: %s\n", rc, gps_errstr(rc));
    return 1;
  }
  gps_stream(&gps_data, WATCH_ENABLE | WATCH_JSON, NULL);

  return 0;
}

还有我的工具链中的一些目录列表--据我所知,libgps已经成功编译了:

代码语言:javascript
运行
复制
# ls -lah /opt/openwrt-sdk/staging_dir/target-arm_cortex-a9+vfpv3_musl_eabi/usr/include/ | grep gps

-rw-rw-r-- 1 root root  80K Sep  7  2017 gps.h

# ls -lah /opt/openwrt-sdk/staging_dir/target-arm_cortex-a9+vfpv3_musl_eabi/usr/lib/ | grep gps

lrwxrwxrwx 1 root root   16 Oct 17 18:46 libgps.so -> libgps.so.23.0.0
lrwxrwxrwx 1 root root   16 Oct 17 18:46 libgps.so.23 -> libgps.so.23.0.0
-rwxr-xr-x 1 root root 101K Oct 17 18:46 libgps.so.23.0.0

事先非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-11 02:15:58

您的链接命令行包含‘-静态’,这阻止了针对*.so共享库(也就是共享对象,因此是'so')的链接,但仍然允许链接到*.一个静态链接库(又名归档)。请参阅:https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

在您列出的目录中,以及链接命令行指向的使用'-L‘标志的目录中,有一个共享对象libgps.so,但是没有静态链接库libgps.a。

这使得链接器无法满足libgps上的链接时间依赖。唯一满足它的方法,使用libgps.so,已经禁用使用‘-静态’。

要解决以下问题,要么:

  1. 修改该工具的编译配方,以便从链接命令行中删除“静态”,以启用共享对象的使用,或
  2. 修改gpsd的编译配方,从而生成一个静态链接库libgps.a,以添加或代替libgps.so.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58445839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档