nmealib库编译提示 undefined reference to `ceil‘

这篇具有很好参考价值的文章主要介绍了nmealib库编译提示 undefined reference to `ceil‘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

下载了nmealib库文件,默认工程进行编译,报错,提示如下:
generate.c:(.text+0x6b8): undefined reference to `ceil,nmealib,makefile,ceil

gcc -I include  -c src/generate.c -o build/nmea_gcc/generate.o
gcc -I include  -c src/generator.c -o build/nmea_gcc/generator.o
ar rsc lib/libnmea.a build/nmea_gcc/generate.o build/nmea_gcc/generator.o build/nmea_gcc/parse.o build/nmea_gcc/parser.o build/nmea_gcc/tok.o build/nmea_gcc/context.o build/nmea_gcc/time.o build/nmea_gcc/info.o build/nmea_gcc/gmath.o build/nmea_gcc/sentence.o
ranlib lib/libnmea.a
gcc -I include  -c samples/generate/main.c -o samples/generate/main.o
gcc samples/generate/main.o -Llib -lnmea -o build/samples_generate
/usr/bin/ld: lib/libnmea.a(generate.o): in function `nmea_gsv_npack':
generate.c:(.text+0x729): undefined reference to `ceil'
collect2: error: ld returned 1 exit status
make: *** [Makefile:43: samples_generate] Error 1
rm samples/generate/main.o

网上搜索,因为使用了 ceil数学相关的库,说是链接需要添加 -lm 的参数。

二、解决办法

官方的 Makefile 文件

CC = gcc

BIN = lib/libnmea.a 
MODULES = generate generator parse parser tok context time info gmath sentence  
SAMPLES = generate generator parse parse_file math
 
OBJ = $(MODULES:%=build/nmea_gcc/%.o) 
LINKOBJ = $(OBJ) $(RES)

SMPLS = $(SAMPLES:%=samples_%)
SMPLOBJ = $(SAMPLES:%=samples/%/main.o)

INCS = -I include 
LIBS = -lm -Llib -lnmea

 
.PHONY: all all-before all-after clean clean-custom doc
 
all: all-before $(BIN) samples all-after 

all-before:
	mkdir -p build/nmea_gcc

clean: clean-custom 
	rm -f $(LINKOBJ) $(BIN) $(SMPLOBJ) $(SMPLS)

doc:
	$(MAKE) -C doc
	
remake: clean all

$(BIN): $(LINKOBJ)
	ar rsc $@ $^
	ranlib $@

build/nmea_gcc/%.o: src/%.c 
	$(CC) $(INCS) -c $< -o $@

samples: $(SMPLS)

samples_%: samples/%/main.o
	$(CC) $< $(LIBS) -o build/$@

samples/%/main.o: samples/%/main.c
	$(CC) $(INCS) -c $< -o $@

可以看到 LIBS 已经包含了 lm 。目前的报错该怎么解决呢?解决办法:修改 LIBS 中 lm 的位置,放在后面。 如下:

LIBS = -Llib -lnmea -lm

再次编译,官方工程编译成功。文章来源地址https://www.toymoban.com/news/detail-809625.html

到了这里,关于nmealib库编译提示 undefined reference to `ceil‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • error: undefined reference to ‘cv::Mat::~Mat()‘解决AndroidStudio集成OpenVC出现的编译报错问题

    本来这种类型的博客不是笔者想写的,不过这个问题,笔者经过网上一番搜索却没有可用的解决方案,因此分享出来帮助大家填坑。 OpenCV官方的Android SDK在这里下载,集成方法就不多介绍了,可以看这两位博主的文章:  小小情意的​ Android 接入 OpenCV库的三种方式 ​  春末

    2024年02月07日
    浏览(47)
  • windows下MSYS、MinGW编译环境使用网络API时报错:undefined reference to `inet_pton‘解决办法

    mingw-gcc环境使用网络需要加上库 -lws2_32。 如果是使用的是Qt Creator那么需要在.pro文件中加入一行: win32:LIBS += -lws2_32 。 当在项目中使用 inet_pton、inet_pton、inet_ntop、inet_ntop 等ip转换函数时会报未定义的错误,这是因为在windows系统下这些函数的定义在头文件 winsock2.h 和 ws2tcpip

    2024年02月11日
    浏览(42)
  • CMake 链接时出现undefined reference to 错误

    一、问题背景 之前新建了一个项目项目文件分布为 1. src/MROR.cpp 2.include/MROR.h 3.main.cpp 执行cmake出现undefined reference toxx,显示main函数中的类成员函数调用没有声明,但是所有声明已经在MROR.h中写了 二、解决方法 我查了很多网上资料 解决方法 1) 可能MROR.cpp文件没有链接到项目,

    2024年02月09日
    浏览(60)
  • Vitis HLS出现undefined reference to的可能解决办法

    问题描述: undefined reference to `cv::namedWindow(std::__cxx11::basic_stringchar, std::char_traitschar, std::allocatorchar const, int)\\\' undefined reference to `cv::resizeWindow(std::__cxx11::basic_stringchar, std::char_traitschar, std::allocatorchar const, int, int)\\\' undefined reference to `cv::imshow(std::__cxx11::basic_stringchar, std::char_traitscha

    2024年02月02日
    浏览(48)
  • undefined reference to `__android_log_print‘

    今天给JNI的C代码添加“__android_log_print”日志打印,发现报错。 这里对原因进行分析 build.gradle中 CCallJava.c(JNI文件中) so文件没有没有添加log的链接库,添加“LOCAL_LDLIBS := -llog”即可

    2024年01月20日
    浏览(94)
  • Dev C++中出现 undefined reference to XXX 错误的解决方式

            主函数中调用在其他文件中定义的函数,编译报错:未定义的引用xxx。         原理:编译器在生成可执行文件的过程包括预处理、编译、汇编、链接,这4个过程,这个问题一般出现在 链接 过程,所谓的链接过程,就是把不同的目标文件粘合在一起,生成一

    2024年02月03日
    浏览(43)
  • 【debug】OpenCV出现问题:undefined reference to ‘cv::Mat::Mat()‘

    参考:动手学ROS2 分析原因: undefined reference to \\\'cv::Mat::Mat()\\\' 原因在于g++找不到库文件,解决方法就是我们帮助它定位到库文件的位置,并通过-L参数指定库目录,-l(小写L)指定库的名字。 解决方法: 在执行命令时添加后缀参数

    2024年02月08日
    浏览(44)
  • Text-to-3D Generation

    1)《Zero-shot text-guided object generation with dream fields》【CVPR 2023】 Project: https://ajayj.com/dreamfields Device: 未公布 前置知识: 伪影(Artifacts) 是指本不存在却出现在的影像片子上的一种成像。在图像生成领域中,可以理解是合成图片中,不自然的、反常的、能让人看出是人为处理过

    2024年02月06日
    浏览(54)
  • openssl库HMAC使用 undefined reference to `HMAC_CTX_new‘

    由于使用的openssl库版本的问题 HMAC_CTX *HMAC_CTX_new(void) 为OpenSSL 1.1.0后开始引入的函数,老的库要使用 void HMAC_CTX_init(HMAC_CTX *ctx) 。 函数原型 官网介绍 使用 HMAC的实现在crypto/hmac/hmac.c中,如下: evp_md指明HMAC使用的摘要算法; key为秘密密钥指针地址; key_len为秘密密钥的长度;

    2024年02月11日
    浏览(50)
  • yolov8使用C++推理的流程及注意事项  undefined reference to `xxxxx‘

    1.下载yolov8项目源码GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch ONNX OpenVINO CoreML TFLite  2.下载opencvReleases - OpenCV,建议版本=4.7.0,选择下载源码, windows版本由于使用的编译器与我们所使用的mingw不一致,后续会出现错误,所以我们选择自己编译 3.下载cmake编译工具,添加到环

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包