首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这个C示例代码中CPU符号是如何解析的?

在这个C示例代码中CPU符号是如何解析的?
EN

Stack Overflow用户
提问于 2013-11-06 19:45:08
回答 2查看 125关注 0票数 2

我在location.c中为apache java守护进程运行了以下代码。

代码语言:javascript
复制
char *location_jvm_cfg[] = {
    "$JAVA_HOME/jre/lib/jvm.cfg",           /* JDK */
    "$JAVA_HOME/lib/jvm.cfg",               /* JRE */
    "$JAVA_HOME/jre/lib/" CPU "/jvm.cfg",   /* JDK */
    "$JAVA_HOME/lib/" CPU "/jvm.cfg",       /* JRE */
    NULL,
};

我查看了源代码,找出CPU宏是在代码"$JAVA_HOME/jre/lib/" CPU "/jvm.cfg"中展开的,但找不到这样一个宏定义的。

我不太确定CPU是否是C宏,还是配置了autoconf工具的其他东西。

如何将上述CPU值替换为实际CPU值?

我面临的问题是,当我将CFLAGSLDFLAGS设置为-m64在Solaris上构建jsvc时,生成的64位solaris二进制文件试图从$JAVA_HOME/jre/lib/sparc/jvm.cfg而不是$JAVA_HOME/jre/lib/sparcv9/jvm.cfg加载jvm .so文件。

更新

使用以下命令行运行./配置与JSVC一起提供的工具可以完成正确的任务

代码语言:javascript
复制
configure --with-java=/path/to/jdk1.7.0_45 --host=sparcv9-sun-solaris2.10 CFLAGS="-m64" LDFLAGS="-m64"

额外的--host=sparcv9-sun-solaris2.10导致生成的gcc命令为

代码语言:javascript
复制
gcc -m64 -DOS_SOLARIS -DDSO_DLFCN -DCPU=\"sparcv9\" -Wall -Wstrict-prototypes

而不是

代码语言:javascript
复制
gcc -m64 -DOS_SOLARIS -DDSO_DLFCN -DCPU=\"sparc\" -Wall -Wstrict-prototypes

这就是导致生成的64位jsvc二进制文件试图链接到32位so文件而不是64位so文件的原因。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 20:26:24

它绝对必须是一个预处理定义。在这段代码里没有其他的工作了。

为了使配置使用不同的CPU,配置脚本可能采用配置三重态。可能看起来像‘i 686-未知-gnu-linux’

显然,configure.guess做的工作是解决这个问题。如果您指定这些三胞胎之一(四胞胎?)在配置命令行上,它可能认为它是在交叉编译器中构建的,但是它应该可以工作。

票数 3
EN

Stack Overflow用户

发布于 2013-11-06 19:51:29

生成的配置脚本根据配置-主机的值将-DCPU添加到CFLAGS,默认配置-构建默认为猜测值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19821333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档