标签: compilation

如何加快g ++编译时间(使用大量模板时)

这个问题可能有些奇怪,但我怎样才能加快g ++编译时间?我的C++代码大量使用boost和模板.我已经尽可能多地从头文件中移动并使用-j选项,但是编译(和链接)仍需要很长时间.

是否有任何工具可以分析我的代码并指出编译器的瓶颈?或者可以以某种方式分析在我的代码上运行的编译器?这将是非常好的,因为有时我有这样的印象,我花了太多时间盯着编译器控制台日志...

c++ templates compilation g++

63
推荐指数
4
解决办法
4万
查看次数

如何运行Java .class文件?

我编译了一个HelloWorld程序,我正在使用命令提示符来运行它..class文件名为HelloWorld2.class

该文件位于C:\ Users\Matt\workspace\HelloWorld2\bin这是我在进入命令提示符时输入的内容,并输入"Java HelloWorld2":

C:\Users\Matt>Java HelloWorld2
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld2
Caused by: java.lang.ClassNotFoundException: HelloWorld2
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld2.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

我期待看到一个HelloWorld打印出来.我究竟做错了什么?我安装了JDK.

java compilation

63
推荐指数
2
解决办法
17万
查看次数

为什么我会收到编译错误"org/codehaus/groovy/control/CompilationFailedException"?

我正在尝试使用Ant脚本和Java编译我的JasperReports模板.我收到此错误:

jasper java.lang.NoClassDefFoundError:
org/codehaus/groovy/control/CompilationFailedException
Run Code Online (Sandbox Code Playgroud)

模板中没有任何复杂的东西,但我仍然无法编译.

java ant compilation jasper-reports

63
推荐指数
4
解决办法
6万
查看次数

ARM编译错误,VFP注册由可执行文件使用,而不是目标文件

我最近几天一直遇到这个问题而且我无法理解这里真正发生的事情,或者问题是什么.

我有一个带有这些标志的makefile:

CC = arm-linux-gnueabihf-gcc-4.6
FLAGS = -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp -std=gnu99
Run Code Online (Sandbox Code Playgroud)

我在.a文件中有一个库,它有一些目标文件,我需要做的就是用可执行文件链接它们.我知道原型和所有这些,唯一抱怨的是以下内容:

/usr/bin/ld: error: *EXECUTABLE* uses VFP register arguments, *OBJECTFILE* does not
/usr/bin/ld: failed to merge target specific data of file *OBJECTFILE*
Run Code Online (Sandbox Code Playgroud)

当我不使用-mfloat-abi = softfp时,我得到另一个与浮点寄存器有关的错误.

有没有人知道造成这种情况的原因,以及我可以做些什么来解决这个问题,例如让我的可执行文件不使用虚拟浮点寄存器参数?

x@x:~/Desktop/perf_test$ make
arm-linux-gnueabihf-gcc-4.6 -c -O3 -march=armv7-a -mtune=cortex-a9 -mfpu=neon -ftree-vectorize -std=gnu99 -mfloat-abi=softfp  perf_test.c ../baseline/util.c
arm-linux-gnueabihf-gcc-4.6 -o perf_test perf_test.o util.o  ../baseline/lib.a
/usr/bin/ld: error: perf_test uses VFP register arguments, perf_test.o does not
/usr/bin/ld: failed to merge target specific data of file perf_test.o
/usr/bin/ld: error: …
Run Code Online (Sandbox Code Playgroud)

gcc arm compilation

63
推荐指数
3
解决办法
10万
查看次数

Grails BuildConfig.groovy,构建,编译和运行时之间的区别?

什么之间的区别build,runtime以及compileBuildConfig.groovy(1.3.7)

grails.project.dependency.resolution = {

    plugins {
        build "acme:acme-cache:latest.integration"
    }

    dependencies {
        build "com.foo.bar:foobar:1.0.5"       
        runtime "org.apache.httpcomponents:httpclient:4.0.3"
        compile("com.thoughtworks.xstream:xstream:1.3.1")
    }
}
Run Code Online (Sandbox Code Playgroud)

grails config compilation build

62
推荐指数
2
解决办法
2万
查看次数

如何在Gradle中定义编译时*仅*类路径?

有人可以给我一个简单的build.gradle示例,说明如何指定未包含在运行时部署(war)中的仅编译时类.

由于'运行时'继承自'compile',Gradle似乎已经采用了错误的方法.我无法想象在运行时我想要在编译时不想要的类的情况.但是,在很多情况下我需要类在编译时生成代码,我不希望在运行时部署它们!

我已经浏览了膨胀的gradle文档,但找不到任何明确的说明或示例.我怀疑这可能是通过定义'配置'并将其设置为CompileJava插件的类路径来实现的 - 但是文档不能解释如何实现这一点.

compilation classpath gradle

62
推荐指数
6
解决办法
3万
查看次数

Lambda中无限while循环内的Thread.sleep不需要'catch(InterruptedException)'-为什么不呢?

我的问题是关于InterruptedException,它是从Thread.sleep方法中抛出的。在合作时,ExecutorService我注意到一些我不理解的怪异行为;这是我的意思:

ExecutorService executor = Executors.newSingleThreadExecutor();
    executor.submit(() -> {
        while(true)
        {
            //DO SOMETHING
            Thread.sleep(5000);
        }
    });
Run Code Online (Sandbox Code Playgroud)

有了这个代码,编译器不给我任何错误或消息InterruptedExceptionThread.sleep应该被抓。但是,当我尝试更改循环条件并用诸如此类的变量替换“ true”时:

ExecutorService executor = Executors.newSingleThreadExecutor();
    executor.submit(() -> {
        while(tasksObserving)
        {
            //DO SOMETHING
            Thread.sleep(5000);
        }
    });
Run Code Online (Sandbox Code Playgroud)

编译器不断抱怨InterruptedException必须处理。有人可以向我解释为什么会发生这种情况,为什么将条件设置为true则编译器会忽略InterruptedException?

java lambda multithreading compilation functional-interface

62
推荐指数
1
解决办法
2193
查看次数

编译错误:包javax.servlet不存在

我有一个包,我导入javax.servlet.*和javax.servlet.http.*当我尝试在命令提示符下编译它时,我得到错误

包javax.servlet不存在

我使用JDK 1.7.0和Tomcat 6.0.

java servlets compiler-errors compilation

60
推荐指数
5
解决办法
17万
查看次数

编译错误 - 缺少zlib.h

我正在尝试使用IBM XL编译器在Blue Gene Q上编译软件,我收到以下错误消息:

"iostreams/zlib.cpp", line 19.10: 1540-0836 (S) The #include file "zlib.h" is not found.
make[3]: *** [zlib.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我已经安装的zlib的新版本和更新的LD_LIBRARY_PATH$HOME/zlib/include

我错过了什么吗?

compiler-errors compilation zlib

60
推荐指数
2
解决办法
9万
查看次数

为什么`abs()`的实现方式有所不同?

在过去的几周中,我的代码中出现了一个令人沮丧的错误。我的代码可以完全按照我的计算机上的预期运行,但是一旦将其移植到HPC服务器上,它就会产生奇怪的结果。

我将其归结为:在我的计算机(iMac)上,该函数abs()使用浮点数,但在服务器上将其abs()截断为整数。

例:

服务器

abs(-1.1341234) = 1
Run Code Online (Sandbox Code Playgroud)

我的Mac

abs(-1.1341234) = 1.1341234
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以使用解决此fabs()问题,这不是问题。我看了gcc两台机器上的版本,这是输出:

服务器

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/apps/software/GCCcore/5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-languages=c,c++,fortran --enable-lto --enable-checking=release --disable-multilib --enable-shared=yes --enable-static=yes --enable-threads=posix --enable-gold=default --enable-plugins --enable-ld --with-plugin-ld=ld.gold --prefix=/apps/software/GCCcore/5.4.0 --with-local-prefix=/apps/software/GCCcore/5.4.0 --enable-bootstrap --with-isl=/dev/shm/GCCcore/5.4.0/dummy-/gcc-5.4.0/stage2_stuff
Thread model: posix
gcc version 5.4.0 (GCC) 
Run Code Online (Sandbox Code Playgroud)

我的Mac

g++ -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.3)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,为什么abs()在gcc和clang之间会产生不同的结果?从字面上看,这个问题使我花了3个星期的时间,所以可以想像我刚才有点咸...

c++ gcc compilation clang

60
推荐指数
1
解决办法
4452
查看次数