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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值