gpt4 book ai didi

java - 来自 Java 的 clang 的 `pkg-config` 参数

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:34 24 4
gpt4 key购买 nike

我正在尝试从 Java 应用程序运行 clang 编译。在我尝试传递 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 调用时完全相同的行却失败了吗?

最佳答案

pkg-config 不是一个参数,而是一个找到你需要的文件的命令。

当您从 bash 运行它时,它首先运行命令 pkg-config --cflags --libs gtk+-2.0,然后将输出作为参数传递给 clang。

(bash 在将命令包装在 char ` 中时执行此操作)

我猜 Java 没有那么好,所以尝试在 shell 中手动运行该命令,并将输出写入您需要的参数。

关于java - 来自 Java 的 clang 的 `pkg-config` 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com