标签: compilation

如何打包我的Perl脚本以在没有Perl的机器上运行?

人们也经常会问"如何编译Perl?" 而他们真正想要的是创建一个可以在机器上运行的可执行文件,即使他们没有安装Perl.

我知道有几种解决方案:

  1. IndigoStar的perl2exe它是商业的.我从未尝试过.它的网站说它可以交叉编译Win32,Linux和Solaris.
  2. 来自ActiveState的Perl Dev Kit.它是商业的.几年前我在Windows上使用它,它可以很好地满足我的需求.根据其网站,它适用于Windows,Mac OS X,Linux,Solaris,AIX和HP-UX.
  3. PAR或者更确切地说PAR :: Packer是免费和开源的.基于测试报告,它可以在Windows,Mac OS X,Linux,NetBSD和Solaris上运行,但理论上它也可以在其他UNIX系统上运行.最近我开始在Linux上使用PAR进行打包,并且也将在Windows上使用它.

其他推荐解决方案

perl executable compilation distribution

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

如何在运行时编译和部署java类?

我正在编写一个规则引擎,它执行由条件结构确定的简单赋值.规则是XML格式的项目的先决条件.我已经将我的XML模式建模为类似于简单的代码块.我希望解析XML,然后将其转换为Java代码.然后,我希望在运行时编译(并运行)此代码.这样做意味着我的规则引擎不再充当解释器,而是执行本机Java字节代码.

我已经找到了解析阶段和或多或少的Java代码生成阶段.我现在想弄清楚最后阶段 - 运行阶段的编译.

遵循这个线程:编译为java字节码(不使用Java)我已经意识到以下可能的解决方案:

我希望能比较这些以及在运行阶段解决Java编译的其他建议.

java runtime compilation

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

c ++ vector.push_back错误:请求成员'push_back'...,这是非类型的'vector(char,allocator(char))()()'

我正在使用Cygwin与GCC,最终我想在一个字符文件中读入一个字符向量,并使用此代码

#include <fstream>
#include <vector>
#include <stdlib.h>

using namespace std;

int main (int argc, char *argv[] )
{
    vector<char> string1();
    string1.push_back('a');

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

生成此编译时错误:

main.cpp:在函数int main(int, char**)': main.cpp:46: error: request for memberpush_back'中的string1', which is of non -class typestd :: vector>()()'

我用一个int和字符串向量尝试了这个,他们有同样的问题.

c++ gcc cygwin compilation vector

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

为C程序设置默认NetBeans选项(-std = c99,-Wall)

我安装了NetBeans 6.9并在Ubuntu Linux 11.10上正常运行.我的目标是设定编译器选项一样-Wall,并-std=c99在默认情况下使用.目前,我必须右键单击我的项目 - >属性 - > C编译器 - >警告级别为" 更多警告 "并添加-std=c99其他选项.在创建许多项目时,这显然是一种痛苦,我确信有一种方法可以使所有这些都成为默认项目.

我发现这个帖子与我的问题密切相关.但是,唯一的答案是安装Code :: Blocks和MSYS 1.0.11,这对我来说没什么意义.我没有看到安装另一个IDE会如何帮助我,MSYS似乎没必要,因为我已经在使用Linux了.

我已经尝试了所有可以想象的合理搜索词,并且我很惊讶我发现的信息很少.似乎大多数使用NetBeans的人都应该在某些时候改变这种类型的东西.我正在搜索的术语:'NetBeans -std = c99 default', 'NetBeans设置默认编译选项','如何使NetBeans默认使用c99''Code :: Blocks设置到NetBeans'.

请有人指出我正确的方向,或告诉我应该寻找什么.我想其他人也有同样的问题,所以我希望这个帖子有用.

c netbeans default compilation options

19
推荐指数
2
解决办法
5785
查看次数

如何更改maven构建目录?

我有一个maven项目,我用Netbeans编译.我有办法指定一个不同的构建目录,编译后复制编译的二进制代码?

java compilation maven

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

我可以忽略gcc警告:'Foo :: m_bar'应该在成员初始化列表中初始化[-Weffc ++]

struct Bar
{
    Bar() {}
};


struct Foo
{
    Foo() = default;
    Bar m_bar;
};

int main()
{
    Foo foo;
}
Run Code Online (Sandbox Code Playgroud)

使用C++ 11 default关键字和gcc警告时-Weffc++,gcc输出:

警告:'Foo :: m_bar'应该在成员初始化列表中初始化[-Weffc ++]

忽略这个警告是否安全?我应该向gcc提交错误吗?

c++ gcc warnings compilation c++11

19
推荐指数
2
解决办法
7776
查看次数

'%d'需要类型为'int'的参数,但参数2的类型为'long unsigned int'[ - Wformat =]

我一直收到编译警告,但我不知道如何解决它:

'%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [
Run Code Online (Sandbox Code Playgroud)

程序运行正常,但我仍然收到编译警告:

/* Sizeof.c--Program to tell byte size of the C variable */
#include <stdio.h>

int main(void) {
    printf("\nA Char is %d bytes", sizeof( char ));
    printf("\nAn int is %d bytes", sizeof( int ));
    printf("\nA short is %d bytes", sizeof( short ));
    printf("\nA long is %d bytes", sizeof( long ));
    printf("\nA long long is %d bytes\n", sizeof( long long ));
    printf("\nAn unsigned Char is %d …
Run Code Online (Sandbox Code Playgroud)

c printf compilation sizeof

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

当@SuppressWarnings("弃用")不起作用时,如何避免弃用警告?

我们有一个Java项目.我们启用-Xlint(启用警告)和-Werror(将警告视为错误)标志javac,以确保我们的代码没有警告.最近我们决定弃用一堂课.在某些情况下,问题根本@SuppressWarnings("deprecation")不会抑制弃用警告,从而导致构建失败.以下是我遇到的用例列表:

  1. 在其他非弃用类中导入.
  2. 在其他已弃用的类中导入.
  3. 家长班.
  4. 输入参数.例如

    @SuppressWarnings("deprecation")
    public class Foo extends Bar<DeprecatedClass>
    { ... }
    
    Run Code Online (Sandbox Code Playgroud)

    然而,即使没有压制,这个也没有警告:

    @Deprecated
    public class DeprecatedClass extends Bar<DeprecatedClass>
    { ... }
    
    Run Code Online (Sandbox Code Playgroud)

AFAIK,没有注释导入的语法,因此对于案例1和2,我们的解决方案是导入*或避免导入.对于案例3和案例4,Java 6和7都不会禁止警告.Java 8将正确地抑制它(可能修复了一个错误).到目前为止还没有解决方案.

不幸的是,我们此时必须支持Java 6,7和8.有办法解决这个问题吗?它是我们Java API发展的障碍.

附录

很多人问为什么我们仍然在我们自己的代码库中使用已弃用的类.原因是该项目是一个图书馆,支持许多不同的客户.在引入新的替换API时,我们必须首先弃用旧的API,将其保留在我们的代码库中,等待所有客户端迁移然后将其删除.有三种常见用例:

  • 我们弃用了类,FooBarFoo扩展的地方Bar.我的问题就是案例2和3.
  • 我们弃用了类,FooBarFoo扩展的地方Collection<Bar>.这是案例2和4.
  • 我们必须保持所有的测试代码类FooBar.测试代码导入这些类.情况如此1.

为什么要坚持考试?不要忘记,如果发现严重错误(例如内存泄漏,安全问题),并且客户端无法轻松迁移到新版本,我们仍需要为旧API提供错误修复.并且必须测试所有更改.

我觉得我们的情况应该在软件库开发和API演变中相当普遍.令人惊讶的是,Java用了很长时间(直到Java 8)来修复bug.

java compilation deprecated compiler-warnings suppress-warnings

19
推荐指数
1
解决办法
6585
查看次数

链接libQt5Core

我使用在线安装程序安装了Qt5.4(在ubuntu 14上工作).我正在尝试编译我的c ++源代码并链接到libQt5Core但是ld会抛出一个错误:

make
g++ -Wall test.o Party.o Communication.o FileParser.o PeerConnection.o ServerModule.o Utilities.o -o party -g -L/home/bush/Qt/5.4/gcc_64/lib -L/usr/lib/x86_64-linux-gnu/ -lQt5Core -lboost_system -lpthread
/usr/bin/ld: warning: libicui18n.so.53, needed by /home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libicuuc.so.53, needed by /home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_setMillis_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_fromUnicode_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_get_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_inDaylightTime_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_open_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_countAvailable_53'
/home/bush/Qt/5.4/gcc_64/lib/libQt5Core.so: undefined reference …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu qt compilation ld

19
推荐指数
3
解决办法
1万
查看次数

转1.5+:错误 - 导入运行时:不使用cgo或SWIG时不允许使用C源文件

我的程序与1.4.2完美搭配.安装完1.5后,我收到以下错误.

import runtime:不使用cgo或SWIG时不允许使用C源文件:atomic_amd64x.c defs.c float.c heapdump.c lfstack.c malloc.c mcache.c mcentral.c mem_linux.c mfixalloc.c mgc0.c mheap. c msize.c os_linux.c panic.c parfor.c proc.c runtime.c signal.c signal_amd64x.c signal_unix.c stack.c string.c sys_x86.c vdso_linux_amd64.c

该错误与程序无关.即使是"Hello world"程序也会抛出相同的错误.

c compilation build go

19
推荐指数
2
解决办法
8889
查看次数