Недавно я пытался собрать библиотеку eastl в Linux 3.10 x86_64, но не удалось.
https://github.com/electronicarts/EASTL
do имеет веб-страницу «Компиляция исходников» здесь:
https://github.com/electronicarts/EASTL/blob/master/CONTRIBUTING.md
следуйте инструкциям и получите libEASTL.a, ar -t libEASTL.a get:
allocator_eastl.cpp.o
assert.cpp.o
fixed_pool.cpp.o
hashtable.cpp.o
intrusive_list.cpp.o
numeric_limits.cpp.o
red_black_tree.cpp.o
string.cpp.o
thread_support.cpp.o
Затем крошечный тестовый источник:
#include <EASTL/vector.h>
#include <EASTL/fixed_vector.h>
int main()
{
eastl::fixed_vector<int,10,true> v ;
int iarr[10] ;
for(int idx=0;idx<10;idx++){
iarr[idx] = idx + 1 ;
v.push_back( iarr[idx] ) ;
}
}
скомпилировал это:
g ++ —std = c ++ 11 -O2 test1.cpp -I / home / mars / tools / EASTL-master / include -I / home / mars / tools / EASTL-master / test / packages / EABase / include / Common /home/mars/tools/EASTL-master/thelib/libEASTL.a -o test1.exe
получит ошибку ссылки:
неопределенная ссылка на `operator new [] (unsigned long, char const *, int, unsigned int, char const *, int) ‘
Библиотека eastl должна иметь простой способ создания и включения заголовочных файлов,
Я просто скучаю по этому, любые советы приветствуются.
Редактировать :
После того, как я добавлю эту новую функцию, ошибка ссылки исчезнет !!!
void* operator new[](size_t size, const char* pName,
int flags, unsigned debugFlags, const char* file, int line)
{
;
}
так что остался только один вопрос: мне нужно правильно написать эту новую функцию !!!!
чтобы сделать это, любой документ может дать мне подсказку ?!
Edit2:
По данным этого сайта:
https://wuyingren.github.io/howto/2016/02/11/Using-EASTL-in-your-projects/
void* operator new[](size_t size, const char* pName, int flags, unsigned debugFlags, const char* file, int line)
{
return malloc(size);
}
void* operator new[](size_t size, size_t alignment, size_t alignmentOffset, const char* pName, int flags, unsigned debugFlags, const char* file, int line)
{
return malloc(size);
}
тогда работа сделана.
Но рекомендуется на оригинальном сайте это >> https://github.com/electronicarts/EASTL/blob/master/doc/CMake/EASTL_Project_Integration.md#setting-up-your-code
void* operator new[](size_t size, const char* name, int flags, unsigned debugFlags, const char* file, int line)
{
return new uint8_t[size];
}
Других решений пока нет …