Аргумент `pkg-config` для clang из Java - PullRequest
1 голос
/ 23 января 2012

Я пытаюсь запустить компиляцию clang из приложения Java.Это прекрасно работает, пока я не попытаюсь передать аргумент pkg-config.Например:

clang -I/usr/lib/gcc/x86_64-linux-gnu/4.6/include `pkg-config --cflags --libs gtk+-2.0` -o file.o main.c

Строка, похожая на эту, прекрасно работает с терминала, но не работает с Java.Clang сообщает об ошибке «нет такого файла или каталога:». Ошибка pkg-config --cflags --libs gtk + -2.0`.

Я использую следующий код для запуска компилятора:

List<String> cmd = new LinkedList<String>();
cmd.add("clang");
cmd.add("-I/usr/lib/gcc/x86_64-linux-gnu/4.6/include");
cmd.add("`pkg-config --cflags --libs gtk+-2.0`");
cmd.add("-o");
cmd.add("file.o");
cmd.add("main.c");

Process proc = Runtime.getRuntime().exec(cmd.toArray(new String[0]));
...

Есть идеи, почему он прекрасно работает с терминала, но при вызове из Java точно такая же строка не срабатывает?

1 Ответ

1 голос
/ 23 января 2012

pkg-config - это не параметр, а команда, которая находит нужные вам файлы.

Когда вы запускаете его из bash, сначала запускаете команду pkg-config --cflags --libs gtk+-2.0, а затем передаете вывод какпараметр для clang.

(bash делает это, когда вы переносите команду в символе `)

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

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