linux编译ntohl加什么库,c – Linux:ntohl无法正常工作
我有一个需要在
Windows,
Linux和VxWorks上构建的项目.该项目建立在Linux和Windows上,但是为VxWorks交叉编译.要处理跨多个平台的字节序,它使用ntoh.h. Linux机器是小端,但是ntohl不会交换我的程序.
我写了一个直接包含in.h的测试程序.交换得恰到好处.
我写了另一个包含ntoh.h的测试程序.交换得恰到好处.两个测试程序都链接到lib64 / libc.so.6.
但是,当我编译我的项目时,ntohl不会交换.我无法使用gdb“break ntohl”命令打破ntohl.在构建时,我看到LITTLE ENDIAN警告(见下文)并且没有看到“SHOULDNT BE HERE”错误.
请帮忙.我不明白为什么会出现这个问题.
下面是ntoh.h:
#ifndef __ntoh__
#define __ntoh__
#include "basic_types.h"
#ifdef WIN32
#include
#elif LINUX
#include
//This is here to determine what __BYTE_ORDER is set to in netinet/in.h.
// Not in original code
#if __BYTE_ORDER == __BIG_ENDIAN
#warning BIG ENDIAN BYTE ORDER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#endif
//This is here to determine what __BYTE_ORDER is set to in netinet/in.h.
// Not in original code
#if __BYTE_ORDER == __LITTLE_ENDIAN
#warning YAY LITTLE ENDIAN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#endif
#else
#error SHOULDNT BE HERE //added for debugging purposes
#define ntohl(x) (x)
#define ntohs(x) (x)
#define htonl(x) (x)
#define htons(x) (x)
#endif
#endif // __ntoh__
我的编译命令的一部分:
g++ -DDAU_PARSER -DNO_MT -DTEST_CLOCK -DLINUX -g -Irelease/include -Irelease/include/Record_Data/ -Irelease/include/Utility -o dauParser DAU_Support_Tools/src/dau_parser.cpp DAU_Support_Tools/src/dau_parser_write_data_to_file.cpp Utility/src/Messaging/Communications/Message.cpp Utility/src/time_type.cpp Utility/src/collectable.cpp Utility/src/clist.cpp Utility/src/clock.cpp Utility/src/test_clock.cpp Utility/src/mutex.cpp Utility/src/ntoh.cpp ...
错误由以下行生成:
int deadbeef = 0xDEADBEEF;
printf("TESTING DEADBEEF %x %x\n", deadbeef, ntohl(deadbeef) );
这两行的输出产生相同的输出.
测试DEADBEEF deadbeef deadbeef
linux编译ntohl加什么库,c – Linux:ntohl无法正常工作相关推荐
- 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译
{写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...
- php自己编译扩展,Linux编译PHP添加扩展库的方法
在编译PHP的时候除了必要的目录指定,好多参数都没有加--等我在安装web程序的时候,才发现,很多参数是要加上的,但是我lnmp已经搭建好了,也不想重新编译,重新安装..于是就在网上找到了此文 一.添 ...
- linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接
大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...
- 反编译所有图片加载库,让OOM无所遁形!
码个蛋(codeegg) 第 989 次推文 作者:ZhouZhengyi 链接:https://juejin.im/post/5ea1c46851882573a25f3ec3 1.背景 最近看滴滴开 ...
- linux 编译报错 not a directory,Linux常见英文报错中文翻译
Linux常见英文报错中文翻译(菜鸟必知) 1.command not found 命令没有找到 2.No such file or directory 没有这个文件或目录 3.Permission ...
- linux sata驱动加载硬盘顺序,linux安装前必备知识
一.学习linux必备条件 1.计算器概论与硬件相关知识 2.先从linux的安装与指令学起 3.linux操作系统的基础技能:包含了使用者,群组的概念,权限概念,程序的定义,龙其权限概念,由于不同的 ...
- linux编译ntohl加什么库,C ++中的64位ntohl()?
我建议阅读以下内容:http : //commandcenter.blogspot.com/2012/04/byte-order-fallacy.html #include #include #inc ...
- linux编译bzip2,ARM-LINUX常用库移植------bzip2
1.从bzip2的官网上(http://www.bzip.org/downloads.html)弄到源码包地址,下载到/opt wget http://www.bzip.org/1.0.6/bzip2 ...
- spdlog linux编译出错,c++日志库spdlog
/*需要包含的头文件*/ #include "spdlog/spdlog.h" #include // EXIT_FAILURE #include #include void as ...
最新文章
- 每日一皮:学PHP的不容易...
- 7.3.1 阻塞IO(blocking IO)
- HDU Problem - 3763 CD(二分)
- 杭电1108java_按照这个步骤来刷题,迷茫的你两个月亦能成为王者
- 整理下开发中常用的第三方库
- Java多线程概念[同步容器,并发容器](二)
- LINUX自学-初识LINUX
- html批量生成断面,【干货】利用Excel在AutoCAD中批量绘制断面图的方法
- 唯美毕业论文答辩PPT模板
- 【导数术】12.极值点偏移与拐点偏移
- 你若运行,便是晴天!
- 【Arch】Android系统简介
- STM32F407--芯片解读
- MAC 10.14安装第三方软件的方法
- windows7旗舰版的好处
- c primer plus第五版勘误
- 大数据治理运营整体解决方案
- backlight子系统二
- 从零开始搭建Pytorch运行环境Linux
- iOS开发技巧:设置App icon图标及修改应用程序名
热门文章
- 47 Three.js使用THREE.ParametricGeometry生成平面图形、波浪图形、和克莱因瓶
- 6009.Cacti监控CMTS思科uBR7246路由器端口信噪比和误码率
- dcdc模块降额设计_专业电源模块生产厂家能动电子入驻拍明芯城,达成战略合作关系...
- 音频放大电路制作记录
- 炒股一定要懂股指期货
- 3D mark 05 测试
- 快速验证产品价值 -- MVP(最小可行产品)
- uboot启动的第二阶段分析
- LifeKeeper 双机软件 集群软件 双机热备份软件
- 分布式与集群的区别究竟是什么?