我有一个测试文件(仅用于链接测试),其中我使用我自己的/ 库调用来重载new/ delete运算符.但是在链接静态库时,我一直得到"未定义的引用"错误,即使我改变了和的顺序.但是一切都适用于连接这个库的其他C程序.我对这个问题很困惑,并且感谢任何线索.mallocfreelibxmalloc.atest.o-lxmalloc
错误消息:
g++ -m64 -O3 -I/usr/include/ethos -I/usr/include/nacl/x86_64 -c -o test.o test.cpp
g++ -m64 -O3 -L. -o demo test.o -lxmalloc
test.o: In function `operator new(unsigned long)':
test.cpp:(.text+0x1): undefined reference to `malloc(unsigned long)'
test.o: In function `operator delete(void*)':
test.cpp:(.text+0x11): undefined reference to `free(void*)'
test.o: In function `operator new[](unsigned long)':
test.cpp:(.text+0x21): undefined reference to `malloc(unsigned long)'
test.o: In function `operator delete[](void*)':
test.cpp:(.text+0x31): undefined reference to `free(void*)'
test.o: In function `main':
test.cpp:(.text.startup+0xc): undefined reference …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Fedora Linux x86_64(4G RAM加16G交换)下mmap一个1TB匿名文件.但我得到ENOMEM"无法分配内存",甚至为32G作为以下代码.我错过了什么吗?感谢任何线索.
#define HEAP_SIZE (1UL << 35)
int main()
{
void *addr = mmap(0, HEAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
if (addr == MAP_FAILED)
{
perror(NULL);
return 1;
}
printf("mmap %d gbytes succeed\n", HEAP_SIZE/(1UL << 30));
return 0;
}
Run Code Online (Sandbox Code Playgroud)