Я собираю PHP7 на машине OpenWRT (маршрутизатор ARM). Я хотел включить MySQL, поэтому мне тоже пришлось его построить. OpenWRT - это на 99,5% обычный Linux, но есть некоторые странные вещи, связанные со сборкой / разделяемой библиотекой, которые, вероятно, не выполняются часто, поэтому я столкнулся с некоторыми трудностями.
MySQL работает нормально (после некоторого перебора), и у меня есть libmysqlclient.so
, который работает. Однако процесс configure
для PHP7 завершается неудачно при попытке связать тестовую программу MySQL, поскольку libmysqlclient.so
должен быть связан со стандартными библиотеками C ++, а не со стандартными библиотеками C. (MySQL, по-видимому, по крайней мере частично C ++, и использует std::...stuff...
.) Configure
пытается скомпилировать тестовую программу с gcc
, которая не включает библиотеки C ++ в ссылку, поэтому тест не пройден.
Я обдумал это, создав простой сценарий переключения C / C ++: если в командной строке есть -lmysqlclient
, то я exec g++ $*
остальное exec gcc $*
. Затем я сказал configure
использовать мой скрипт в качестве компилятора C.
Мне приходит в голову, что должен быть лучший способ справиться с этим, хотя. Кажется, у libmysqlclient.so
должен быть какой-то способ сказать компоновщику, что ему также нужен libstdc++.so
, так что даже если gcc
используется для связи, все необходимые библиотеки будут извлечены.
Есть ли способ пометить зависимости в libmysqlclient.so
? Или сделать configure
умнее при запуске тестовых программ?