मेरे पास बस एक सिस्टम क्रैश है और उबंटू 11.10 को पुनर्स्थापित करें, और मेरा कोड इस अजीब त्रुटि उत्पन्न करता है।अपरिभाषित संदर्भ 'shm_open', पहले से ही add -lrt ध्वज
मैं परीक्षण करने के लिए एक सरल कोड नमूना लिखा था जहां समस्या है:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
int main (void) {
int i;
i = shm_open ("/tmp/shared", O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); printf ("shm_open rc = %d\n", i);
shm_unlink ("/tmp/shared");
return (0);
}
और संकलन आदेश
gcc -lrt test.c -o test
त्रुटि है:
/tmp/ccxVIUiP.o: In function `main':
test.c:(.text+0x21): undefined reference to `shm_open'
test.c:(.text+0x46): undefined reference to `shm_unlink'
collect2: ld returned 1 exit status
मैं पहले से ही जोड़ दिया है- lrt lib, यह अभी भी संकलित क्यों नहीं है? अंत में
मुझे लगता है कि आप -pthread चाहते हो सकता है, लेकिन मैं भूल जाते हैं? कारण। – blueshift
धन्यवाद, मेरे सलाहकार के कंप्यूटर को जोड़ने के लिए आवश्यक है, यह थ्रेड सुरक्षित कार्यों के साथ lpthread का एक बेहतर संस्करण है। और मैं सिर्फ lrt जोड़ सकता था। मुझे लगता है कि दोनों lrt और pthread दोनों POSIX के पुस्तकालय हैं? – bxshi
@bxshi: POSIX लाइब्रेरी नाम निर्दिष्ट नहीं करता है; विभिन्न यूनिक्स स्वादों में अलग-अलग नामांकित पुस्तकालयों में कार्य होते हैं। –