錯誤:sem_union的存儲大小未知問題的處理辦法。本站提示廣大學習愛好者:(錯誤:sem_union的存儲大小未知問題的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是錯誤:sem_union的存儲大小未知問題的處理辦法正文
明天在編譯代碼的時分提示 錯誤: ‘sem_union'的存儲大小未知
問題緣由:在新版2.6內核中關於union sem_union 這個結合體曾經被正文了,需求自己寫這個結合體.
處理方案:在C文件中先定義:
union semun { int val; struct semid_ds *buf; unsigned short *array; }sem_union;
隨後編譯時它就能找到事後定義好的sem_union結合體了.
Linux下編譯時呈現的錯誤及處理辦法
(1)由於是Linux老手,所以如今才開端接觸線程編程,照著GUN/Linux編程指南中的一個例子輸出編譯,後果呈現如下錯誤:
undefined reference to 'pthread_create'
undefined reference to 'pthread_join'
問題緣由:
pthread 庫不是 Linux 零碎默許的庫,銜接時需求運用靜態庫 libpthread.a,所以在運用pthread_create()創立線程,以及調用 pthread_atfork()函數樹立fork處置順序時,需求鏈接該庫。
問題處理:
在編譯中要加 -lpthread參數
gcc -o thread thread.c -lpthread
thread.c為你些的源文件,不要忘了加上頭文件#include<pthread.h>
(2)呈現正告:內建函數strlen不兼容的隱式聲明,內建函數exit不兼容的隱式聲明
問題緣由:由於函數strlen在string內,exit在stdlib內。在文件中沒有添加頭文件 string.h和stdlib
問題處理:在文件中添加頭文件 string.h和stdlib
(3)呈現錯誤:sem_union的存儲大小未知
問題緣由:在新版2.6內核中關於union sem_union 這個結合體曾經被正文了,需求自己寫這個結合體
問題處理:在C文件中先定義
union semun {int val; struct semid_ds *buf; unsigned short *array;} sem_union;
隨後編譯時它就能找到事後定義好的sem_union結合體了。