我有一个需要在

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无法正常工作相关推荐

  1. 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译

    {写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...

  2. php自己编译扩展,Linux编译PHP添加扩展库的方法

    在编译PHP的时候除了必要的目录指定,好多参数都没有加--等我在安装web程序的时候,才发现,很多参数是要加上的,但是我lnmp已经搭建好了,也不想重新编译,重新安装..于是就在网上找到了此文 一.添 ...

  3. linux 编译链接过程,编译程序 一:linux程序编译过程(一)-编译和链接

    大家肯定都知道计算机程序设计语言通常分为机器语言.汇编语言和高级语言三类.高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类 ...

  4. 反编译所有图片加载库,让OOM无所遁形!

    码个蛋(codeegg) 第 989 次推文 作者:ZhouZhengyi 链接:https://juejin.im/post/5ea1c46851882573a25f3ec3 1.背景 最近看滴滴开 ...

  5. linux 编译报错 not a directory,Linux常见英文报错中文翻译

    Linux常见英文报错中文翻译(菜鸟必知) 1.command not found 命令没有找到 2.No such file or directory 没有这个文件或目录 3.Permission ...

  6. linux sata驱动加载硬盘顺序,linux安装前必备知识

    一.学习linux必备条件 1.计算器概论与硬件相关知识 2.先从linux的安装与指令学起 3.linux操作系统的基础技能:包含了使用者,群组的概念,权限概念,程序的定义,龙其权限概念,由于不同的 ...

  7. linux编译ntohl加什么库,C ++中的64位ntohl()?

    我建议阅读以下内容:http : //commandcenter.blogspot.com/2012/04/byte-order-fallacy.html #include #include #inc ...

  8. linux编译bzip2,ARM-LINUX常用库移植------bzip2

    1.从bzip2的官网上(http://www.bzip.org/downloads.html)弄到源码包地址,下载到/opt wget http://www.bzip.org/1.0.6/bzip2 ...

  9. spdlog linux编译出错,c++日志库spdlog

    /*需要包含的头文件*/ #include "spdlog/spdlog.h" #include // EXIT_FAILURE #include #include void as ...

最新文章

  1. Fescar 发布 0.3.0 版本, 支持 Eureka 注册中心
  2. ibatis调用sqlserver存储过程
  3. 《深入理解Android:Telephony原理剖析与最佳实践》一1.3 Android Telephony框架结构...
  4. metaweblog php,[PHP]利用MetaWeblog API实现XMLRPC功能
  5. linux脚本下载,一个测试下载速度的shell脚本
  6. Java 地下迷宫·算法·(ACM/蓝桥杯)·递归解法
  7. 【OpenGL从入门到精通】Shader专题
  8. HBase shell命令行
  9. ionic tab(选项卡)
  10. c32-野指针和内存操作分析
  11. 项目,项目集与项目组合的关系
  12. Sql Server :Could not write value to key \Software\Classes\CLSID\...., Verify that you have....
  13. 苗木损耗1.1用计算机怎么算,04园林绿化定额说明
  14. Remix OS——一个很有魅力的Android系统
  15. 8b/10b编码技术系列(二):Disparity、RD、8b/10b编码
  16. 【MATLAB】通信信号调制通用函数 — 傅里叶逆变换
  17. python从word中提取信息导入excel_使用python模块win32com提取word表格到excel
  18. 塔望 · 食界人物|中国功能饮料A股第一股东鹏饮料创始人林木勤
  19. 有关input输入框内容改变后的触发事件
  20. 成功者都善于造势、借势?造势和借势的真正含义是什么?

热门文章

  1. 2019中兴面试经验
  2. 玛拉工艺计算机科学博士申请,顾老师助力新鲜出炉马来西亚玛拉工艺大学博士一枚!...
  3. cad图纸怎么看懂_老师傅教你如何看懂施工图纸,看完绝对会
  4. 《基础微积分教材中译版》上线计划预告
  5. 微软邮箱服务器和端口,发送邮件的服务器的ip和端口
  6. 笔记本拆c面_拆解C面准备步骤 注意拧下所有螺丝_Alienware 15_笔记本评测-中关村在线...
  7. c语言 bnf,c语言的bnf总结
  8. abap开发语法小结
  9. 卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解
  10. 超详细版企业离线部署CDH6.10集群与配置使用