2012-02-03 2 views
0

В коде двигателя Zend для PHP я вижу строки, подобные приведенным ниже в файлах заголовков.GCC жалуется на нестандартное соглашение о вызове «ZEND_API»

ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC; 

Я новичок в профессиональном программировании на C/C++.

Когда я пытаюсь скомпилировать С файлов в пакете с помощью GCC я получаю ошибки как

zend_alloc.h:55: error: expected =, ,, ;, asm or __attribute__ before char 

Я попробовал команду gcc -I./ -I../TSRM zend_language_*.c

Это выглядит как GCC является complaing о ZEND_API. Что указывает ZEND_API? Может ли кто-нибудь помочь мне понять, почему эта ошибка происходит?

SVN repository where the files are located.

ответ

3

Эти файлы являются частью интерпретатора PHP, и не предназначены для компиляции отдельно от него. Конфигурационный скрипт должен определить ZEND_API макрос:

__attribute__ ((visibility("default"))) 

на системах, которые поддерживают его (например, GCC 4.0+), и ни к чему на других компиляторов.

Если вы просто пытаетесь создать PHP, загрузите весь источник из php.net и используйте configure/make для его создания. Процесс сборки является сложным и не предназначен для того, чтобы быть очевидным (или даже возможным) для запуска вручную.

+0

Спасибо за ответ. На самом деле, я просто хочу построить парсер для zend-языка и использовать его для работы с деревом синтаксиса PHP. Возможно ли/рекомендовано это сделать и как я могу скомпилировать только часть пакета? – Vamsi

Смежные вопросы