كيفية حل الأخطاء مثل "بنية IPHDR" ليس لديه عضو باسم "داددر"

StackOverflow https://stackoverflow.com/questions/2034678

سؤال

ركضت برنامج (الرابط هو - http://www.security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c.c. ) في بلدي فيدورا كور 5. على تجميع، أحصل على الأخطاء التالية:

[root@localhost ~]# gcc sniffer_eth_ip_tcp.c
    In file included from sniffer_eth_ip_tcp.c:12: /usr/include/linux/ip.h:97: error: expected specifier-qualifier-list before ‘uint8_t’
    In file included from /usr/include/linux/tcp.h:21,
                 from sniffer_eth_ip_tcp.c:13:
    /usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header; include   <endian.h> instead!
    sniffer_eth_ip_tcp.c: In function ‘ParseIpHeader’:
    sniffer_eth_ip_tcp.c:147: error: ‘struct iphdr’ has no member named ‘daddr’
    sniffer_eth_ip_tcp.c:148: error: ‘struct iphdr’ has no member named ‘saddr’
    sniffer_eth_ip_tcp.c: In function ‘ParseTcpHeader’:
    sniffer_eth_ip_tcp.c:185: error: ‘struct iphdr’ has no member named ‘protocol’
    sniffer_eth_ip_tcp.c:187: error: ‘struct iphdr’ has no member named ‘ihl’

ولكن، يحتوي بنية IPHDR في ملف الرأس المقابل على أعضاء البيانات المذكورة أعلاه. يمكن لأي شخص الرجاء المساعدة ..

هل كانت مفيدة؟

المحلول

الطريقة الوحيدة للحصول على هذا الخطأ هو إذا كان برنامج IPHDR الخاص بك يشير إلى لا يتضمن أعضاء البيانات هذه. لذلك، البحث من خلال كل ما تبذلونه من ذلك، تحقق من وجود DUP، وما إلى ذلك (أيضا، يمكنك تشغيل المصدر من خلال Precompile ومعرفة كل ما تم تضمينه، والتي عادة ما توفر إجابتك)

تعديل
قم بتشغيل CPP على مصدرك لمعرفة ملفات الرأس التي يتم تضمينها (عند الطلب). إذا كان لديك رأس مع المعلومات الخاطئة المضمنة قبل المعلومات الصحيحة، فستحصل على مشكلة. في جوهرها، تضمين فقط ملفات الرأس اللازمة لتجميع البرنامج
/تعديل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top