标签: compilation

在Linux上编译Objective-C项目(Ubuntu)

如何让Objective-C项目在Ubuntu上运行?

我的文件是:

Fraction.h

    #import <Foundation/NSObject.h>

    @interface Fraction: NSObject {
        int numerator;
        int denominator;
    }

    -(void) print;
    -(void) setNumerator: (int) n;
    -(void) setDenominator: (int) d;
    -(int) numerator;
    -(int) denominator;
    @end
Run Code Online (Sandbox Code Playgroud)

Fraction.m

    #import "Fraction.h"
    #import <stdio.h>

    @implementation Fraction
    -(void) print {
        printf( "%i/%i", numerator, denominator );
    }

    -(void) setNumerator: (int) n {
        numerator = n;
    }

    -(void) setDenominator: (int) d {
        denominator = d;
    }

    -(int) denominator {
        return denominator;
    }

    -(int) numerator {
        return numerator;
    }
    @end
Run Code Online (Sandbox Code Playgroud)

的main.m

    #import <stdio.h>
    #import …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu compilation objective-c

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

Ironpython 2.6 .py - > .exe

我已经尝试使用py2exe(与ipy不兼容)和PYC(过时).任何人都可以指向一个好的编译器的方向?

ironpython compilation

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

是否有一种智能方法可以在编译时知道要链接到的库的名称?(Linux的/ Kubuntu的)

请多多包涵.我真的想知道,因为我对答案感到好奇:

是否有一种智能方法可以在编译时知道要链接到的库的名称?

请允许我举一个例子,说明我的问题的原因.

我是C++新手.我正在学习编译,链接和像boost这样的库.我刚刚发现了boost/filesystem并想尝试一下.遇到麻烦编译后,我使用了以下极简主义代码:


// file boost_example.cpp
 #include "boost/filesystem.hpp"
#include <iostream>

int main() { std::cout<<"Hello"; return 0; }

我试图编译它,但作为一个新手,我犯了一个新手错误:我忘了链接到正确的库!

     g++ boost_example.cpp -o run
Run Code Online (Sandbox Code Playgroud)
确切地说,我遇到了本书这一章中解释的问题.
我知道我已经安装了升级版(我被告知安装它来编译另一个项目).我试图从其他项目的Makefile中复制,但以下不起作用:
     g++ boost_example.cpp -o run -lbooster
     g++ boost_example.cpp -o run -lboost
尝试从代码中的#include行做出有根据的猜测,我尝试了以下无效:
     g++ boost_example.cpp -o run -lboost_filesystem
到那时,我已经开始了疯狂地搜索网页.我讨厌搜索引擎,因为大多数时候,你找不到你正在寻找的东西.我找到了以下内容,但他们没有帮助,只是浪费我的时间:
在kubuntu C++/Boost链接器错误下提升库链接问题

由于我是一名RTFM人,我实际上已经检查了我想要使用的库的官方文档:http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm但是我没有找到任何编译信息.

在某个阶段,我受到启发,检查我在系统上实际安装的内容:

$ locate boost_file
/usr/lib/libboost_filesystem-mt.a
/usr/lib/libboost_filesystem-mt.so
/usr/lib/libboost_filesystem-mt.so.1.38.0
Run Code Online (Sandbox Code Playgroud) 因此,我找到了要链接的库的正确名称.以下工作:
     g++ boost_example.cpp -o run -lboost_filesystem-mt

现在,除了使用(可能)智能猜测工作和搜索网络之外,是否有更智能的方法来查找要链接的库的名称?我永远不会猜到boost_filesystem-mt给出标题的库名"boost/filesystem.hpp".

更糟糕的是:官方网站上没有提到boost_filesystem-mt!(我猜这是依赖于发行/包装).

再一次,在提出问题之前,我总是提出RTFM,我找到了上述书中的这一章,所以我在/ usr/lib /上查看了我在系统上可以找到的内容:

$ ls …

c++ compilation linked-list libraries

18
推荐指数
2
解决办法
4021
查看次数

什么是"对象文件"中的"对象",为什么这样称呼?

我被问到一个问题:"什么是'目标文件'?".

看完Wiki后,我只知道它包含了对象.

但那些对象是什么以及为什么有人这样称呼他们呢?

c c++ linker compilation object-files

18
推荐指数
4
解决办法
8152
查看次数

如何编译GnuTLS

我试图在Centos 6.2上多次编译GnuTLS库,但没有运气.这些是步骤:

我下载了Nettle 2.4

[root@localhost opt]# wget http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz
[root@localhost nettle-2.4]# tar zxvf nettle-2.4.tar.gz
[root@localhost nettle-2.4]# cd nettle-2.4
[root@localhost nettle-2.4]# ./configure --enable-shared --prefix=/usr



  Version:           nettle 2.4
  Host type:         x86_64-unknown-linux-gnu
  ABI:               64
  Assembly files:    x86_64
  Install prefix:    /usr
  Library directory: ${exec_prefix}/lib64
  Compiler:          gcc
  Shared libraries:  yes
  Public key crypto: no
Run Code Online (Sandbox Code Playgroud)

我运行命令makemake install

我下载了最新的GnuTLS

 ./configure --with-libnettle-prefix=/usr

hecking for shared library run path origin... done
checking whether to use nettle... yes
checking for libnettle... no
configure: error:
  ***
  *** Libnettle 2.4 …
Run Code Online (Sandbox Code Playgroud)

c makefile compilation build

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

如何让Emacs识别bash环境变量进行编译?

我试图通过Emacs的编译模式编译u-boot,看起来Emacs不知道如何找到bash环境变量.即使我设置了它们,并且可以通过Emacs shell仿真进行编译,编译模式仍然会尝试编译,就好像它们不存在一样.

我需要做些什么来使其更具环保意识?

emacs compilation

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

Makefile在Ubuntu/Linux上用C++编译OpenCV代码

我正在使用Learning OpenCV学习OpenCV.

编译代码时我遇到的一个问题是我必须编写一个很长的命令来编译并获取可执行文件.

这是我正在使用的命令

g++ `pkg-config –cflags opencv` file_name.cpp -o output_file `pkg-config –libs opencv`
Run Code Online (Sandbox Code Playgroud)

我没有制作专家,但我想我可以消除写使用很长的命令作出.在此之前,我应该解释我的工作流程.我在我的主目录(~/opencv/)中创建了一个名为opencv的目录.我正逐节阅读本书,并将示例或练习编码到该目录中的新cpp源代码文件中.所以我不知道手头的文件名.

现在我想要做的是,

假设我编写了一个facedetect.cpp在我的opencv目录中命名的新文件,如果我调用make就像这样

make facedetect
Run Code Online (Sandbox Code Playgroud)

然后我想让make为我执行以下命令

g++ `pkg-config --cflags opencv` facedetect.cpp -o facedetect `pkg-config --libs opencv`
Run Code Online (Sandbox Code Playgroud)

所以每当我创建一个名为abc.cpp的新文件时,我都会执行make abc 以便我可以运行

$ ./abc
Run Code Online (Sandbox Code Playgroud)

在我的命令行测试我的abc.cpp

请给出make文件,这样我就可以省去每次输入那个长命令的挫败感.

PS:我用Google搜索的帮助就这个问题和发现这种使用CMake的,但我不明白是什么一样.还请解释如何使用CMake执行相同的任务.

opencv makefile compilation cmake

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

Java如何知道在打破循环时跳转到哪里?

while (condition) {

    if (condition) {
        statement1;
        statement2;

        break;
    } else {
        statement3;
        statement4;
    }

}
Run Code Online (Sandbox Code Playgroud)

通过break在if子句中使用,我们确保循环停止并退出.

我不明白break语句如何"知道"它是否在一个循环中,它首先退出,或者它如何"知道"跳转到哪里.这是怎么发生的?

java loops compilation

18
推荐指数
3
解决办法
1387
查看次数

go build工作正常但是运行失败

我在一个目录下的主程序包中有一些文件:

main.go config.go server.go

当我这样做:"去构建"程序构建完美,运行良好.当我这样做:"去运行main.go"它失败了.

输出:

# command-line-arguments
./main.go:7: undefined: Config
./main.go:8: undefined: Server
Run Code Online (Sandbox Code Playgroud)

未定义的符号是结构,它们是大写的,因此应该导出.

我的Go版本:go1.1.2 linux/amd64

compiler-errors compilation go

18
推荐指数
2
解决办法
4912
查看次数

使用CMake编译静态可执行文件

对于一个项目,我需要创建一个可执行文件,其中包含我使用的所有库(opencv,cgal),以便在没有这些库的计算机上执行它.目前,这是我的CMakeLists.txt(我使用的是linux).

cmake_minimum_required(VERSION 2.8)
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
project( labeling )
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
add_library(OpenCV STATIC IMPORTED)
add_library(CGAL STATIC IMPORTED COMPONENTS Core)
add_library(GMP STATIC IMPORTED)
find_package(OpenCV REQUIRED)
find_package(CGAL QUIET COMPONENTS Core )
find_library(GMP_LIBRARY gmp /usr/lib)

include(src)
include( ${CGAL_USE_FILE} )
include( CGAL_CreateSingleSourceCGALProgram )


set(EXECUTABLE_OUTPUT_PATH ../bin)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")

include_directories( src )
include_directories( ${OpenCV_INCLUDE_DIRS} )

file(GLOB_RECURSE nei_SRC "src/*.cpp")
add_executable( nei_segmentation ${nei_SRC})
target_link_libraries( nei_segmentation ${OpenCV_LIBS} ${GMP_LIBRARY})
Run Code Online (Sandbox Code Playgroud)

以这种方式,我的可执行文件中只包含GMP和其他一些c ++库.我的问题是:我如何创建一个makefile,以便以静态方式自动包含所有库,并只创建一个包含所有库的"大"可执行文件?你能帮助我吗?

c++ opencv compilation cmake cgal

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