Как исключить / usr / include Path из приложения Linux? - PullRequest
2 голосов
/ 16 ноября 2011

Я столкнулся с проблемой, которую мне не удалось избежать. Redhat 6 (или большинство пакетов linux) поставляется с пакетом QT по умолчанию, установленным с заголовками / etc в папках / usr / lib и / usr / include.

Теперь я хочу создать ссылку на более новую версию QT, не удаляя старую версию. К сожалению, поскольку заголовки находятся в папке / include /, gcc автоматически находит их, а затем использует неправильные включаемые файлы (вместо тех, которые есть у меня в другом месте).

Я не могу остановить компилятор от автоматического выполнения этого. Ранее я справлялся с этим, просто вручную удаляя старые библиотеки / заголовки, но это ужасное решение в долгосрочной перспективе.

Я не думаю, что эта проблема специфична и для QT, просто это мой текущий экземпляр.

Есть предложения?

Большое спасибо:)

Ответы [ 2 ]

4 голосов
/ 16 ноября 2011

Если вы указываете каталоги включения более новой установки Qt с помощью опции -I, его следует искать, прежде чем стандартные каталоги включения (т. Е. / Usr / include и т. Д.) Полностью удаляют стандартные каталоги включения из пути поиска.скорее всего, не очень хорошая идея, потому что там также будут найдены стандартные заголовки (обратите внимание, что сами заголовки Qt, скорее всего, включают стандартные заголовки и не будут работать, если они не найдены).

Однако, если вы действительно не хотитестандартный каталог для поиска, опция -nostdinc должна делать то, что вы хотите.

1 голос
/ 18 ноября 2011

Моя проблема оказалась связана с использованием неверной версии qmake.Он находил предыдущую версию qmake, и хотя она была из qt4, он ссылался на неправильные включения.

Обновление путей qmake помогло решить эту проблему.

...