Сделайте небольшой исполняемый файл Mach-o с C - PullRequest
5 голосов
/ 10 ноября 2011

Ради любопытства я пытаюсь понять, что самое маленькое, что я могу сделать на C-программе с минимумом ассемблера. Я хочу посмотреть, смогу ли я сделать простую демонстрацию OpenGL (то есть демонстрационную сцену), используя OpenGL и GLUT, связанные динамически, без стандартной библиотеки. Тем не менее, у меня проблемы с самыми основными вещами.

Я создал тестовый файл main.c, содержащий

void newStart() {
  //Do stuff here...

  asm("movl $1, %eax;"
      "xorl %ebx, %ebx;"
      "int  $0x80;");
}

и я делаю это с

gcc main.c -nostdlib -e newStart -o min

с использованием опции '-e' в соответствии с рекомендацией этого вопроса StackOverflow . Я получаю следующую ошибку при попытке его скомпилировать:

ld: warning: symbol dyld_stub_binder not found, normally in libSystem.dylib
ld: entry point (newStart) undefined. for architecture x86_64

Я использую OS X 10.7 (Lion). Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 10 ноября 2011

Для newStart() соответствующий символ - _newStart.Вы должны использовать это для опции -e:

gcc main.c -nostdlib -e _newStart -o min

См. Этот вопрос переполнения стека о том, почему подчеркивания добавляются к (внешним) именам функций: Почему компиляторы C добавляют подчеркивания к внешним именам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...