LINUX.ORG.RU

По идее тебе нужно добавить в командную строку gcc вывод pkg-config:

# pkg-config --libs --cflags sdl2
-D_REENTRANT -I/usr/include/SDL2  -lSDL2 -lpthread
По видимому библиотеки SDL2main на центоси нет и она не нужна.

Deleted
()
Ответ на: комментарий от Deleted

Кстати системы сборки вроде cmake сами могут находить правильные либы и опции для их использования (обычно вызывая всё тот же pkg-config).

Deleted
()
Ответ на: комментарий от Deleted

CMake юзаем для сборки. Проблема разрешилась - выкинул SDL2main, т.к все равно не собираем под платформы, отличные от Linux x86.

Meyer ★★★★★
() автор топика
Ответ на: комментарий от Meyer

Проблема разрешилась - выкинул SDL2main, т.к все равно не собираем под платформы, отличные от Linux x86.

А завтра в sdl2-main будет добавлена какая-либо инициализация и ваше приложение перестанет работать, т.к. вы решили использовать свой entry point.

Если я правильно понимаю, в sdl2.h есть нечто такое:

int fakeAppMain(int arc, const char* argv[]);

int main(int arc, const char* argv[])
{
   // do some sdl2-related initialization

   int result = fakeAppMain(arc, argv);

   // do some sdl2-related deinitialization

   return result;
}

#define main fakeAppMain

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

А завтра в sdl2-main будет добавлена какая-либо инициализация и ваше приложение перестанет работать

Не центосом же едины) На рабочих компах стоят дистрибутивы по предпочтению, если что - есть личный ноут с гентой (там собирается без правок).

Meyer ★★★★★
() автор топика
Последнее исправление: Meyer (всего исправлений: 1)
#ifndef _WIN32
#undef main
#endif

И никакие SDL2main не нужны. Он имеет реально смысл разве что на Windows, и то сомнительно.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 2)
Ответ на: комментарий от andreyu

Нет там такого. SDL2main исключительно для того, чтобы иметь единый main() под все платформы. На Windows, например, в SDL2main написан WinMain, который берёт командлайн и передаёт его в стандартный main(argc, argv).

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

И никакие SDL2main не нужны.

Он вроде как в зависимостях движка был (насколько я понимаю, под Android/iOS свой entry point нужен). А так как мы собираем только под линукс, я все участки ненужного кода выкинул.

Meyer ★★★★★
() автор топика
Ответ на: комментарий от Meyer

А, да, вспомнил. В Android & iOS в принципе нет никаких main(). Не знаю как в iOS, но в Android SDL2 создаёт поток и в нём пускает SDL_main().

И он там будет этого требовать, потому что надо. :)

a1batross ★★★★★
()
Ответ на: комментарий от a1batross

SDL2main исключительно для того, чтобы иметь единый main() под все платформы.

Сегодня это так, а завтра может быть иначе.

andreyu ★★★★★
()
Ответ на: комментарий от a1batross

В Android & iOS в принципе нет никаких main()

Естественно, что и там, и там есть main.

Вот псевдокод для iOS, tvOS, macOS:

int main(int argc, char* argv[])
{
   return {NS|UI}ApplicationMain(argc, argv, nil, appDelegateClassName);
}

Псевдокод для андроид:

void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize)
{
    pthread_create(&android_app->thread, &attr, android_app_entry, android_app);
}

static void* android_app_entry(void* param)
{
   android_main((struct android_app*)param);
}

void android_main(android_app* app)
{
   // application code here
}

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Естественно, что и там, и там есть main.

Некий entry point всё равно есть, без этого не бывает.

Сегодня это так, а завтра может быть иначе.

Ну завтра может быть что угодно. Это проблемы завтрашних «нас».

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от a1batross

Это проблемы завтрашних «нас».

Это проблемы тех, кто любит «и так сойдет» вместо «как рекомендовано».

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Никакой жёсткой рекомендации нет. Для классических платформ это не требование. Так у них и в доках было написано, вроде.

a1batross ★★★★★
()

А почитал бы документацию, проблемы бы не было. Это название твоего main под юниксами

ckotinko ☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.