Articles of 构build

使用g ++,如何取消虚拟类成员函数

对于声明为虚函数的函数,我似乎无法获取不推荐使用的警告来打印出来。 我正在使用“g ++(GCC)4.1.1 20061011(Red Hat 4.1.1-30)”。 我的研究表明,在gcc 4.x中可能会有一些问题,关于废弃纯虚函数(即类bueller {virtual int cameron()= 0;};),但不是…我想你会打电话给他们定期虚拟function 就这样我们在同一页面上… foo.h中 class Foo { void Foo_A() __attribute__((deprecated)); //non-virtual virtual void Foo_B() __attribute__((deprecated)); //virtual virtual void Foo_C() __attribute__((deprecated)) = 0; //pure virtual }; 说我编译这个,一个foo.cpp文件和一些main.cpp文件使用g ++。 1)任何使用Foo_A()的确实会显示警告。 2)任何使用Foo_B()的都不会显示警告。 3)任何inheritanceFoo的实现Foo_C,然后使用它不会显示警告。 第一:有效,没问题。 数字3:似乎是一个已知的bug /function..无论.. #2似乎没有探索,但是。 也许它被排在#3,虽然我没有发现任何提及它。 任何人都知道,如果我想在这里错过任何关于我想弃用的常规虚拟类成员函数? 顺便说一句:-Wno-deprecate在我的makefiles中没有打开。

如何build立一个可靠的工具链

请指导我完成构build足以构build可引导的Linux映像的基本工具链所需的步骤,并讨论为什么应按照您的build议进行操作 。 指向现有的文档也非常感谢。 我从头开始研究Linux,并且使用分发特定工具来构buildGentoo映像。 我还查看了用于为embedded式设备构build交叉编译工具链的各种工具的文档。 然而,这些工具的文档只讨论编译工具链实际上使用这些工具,而不是如何做,以及为什么不是不同。 通常这些资源也提到其他工具的不同之处(当然更糟糕),所以我感觉只是阅读源代码将只会帮助我学习给定的构build工具是如何工作的,而不是提供对实际过程的洞察,这是可能的变异。 所以我对讨论关于自动化工具链自动化的讨论并不是很感兴趣,而是在关于如何手动完成的评论说明中 。 另外请注意,现在我打算在同一台机器上构build和运行映像,所以我不需要交叉编译。 但是我仍然对关于交叉编译的讨论感兴趣,但重点应该放在别处。 还有什么需要和build立一个可启动的图像不是这个问题的一部分 – 只是build立工具链到达那里。 为了帮助你理解我站在这里的一些问题和一些我相信知道的事情:我明白,即使在本地构build时,将用于构build图像的工具链与主机的工具链分开也很重要,以避免链接到库这可能以后不可用(其他原因?)。 我不知道是相应地调整环境variables是足够的(哪个?),或者最好是build立一个工具链,chroot和重build(我从重build中获得什么?)。 如果做前者会出什么问题? 我已经读过,构buildgcc两次(使用第一次构build第二个)是过度杀伤,因为它的构build系统这样做无论如何。 如果有的话,两个版本有什么区别可以检测到,为什么它们很重要? 如果这两个版本不一样,那么肯定会出现一些问题,如果他们这样做了,那么这个问题又会如何呢? 在正确完成时进行交叉编译会产生与原生完全相同的二进制文件吗? 如果不是这样,那为什么不那么糟糕,许多项目都是这样select的?

在Linux构build服务器上从Windows构buildEclipse

安装: – 在Windows 7上运行的Eclipse Juno – 位于Linux构build服务器上的GNU工具链 – 可从Windows 7机器和Linux构build服务器访问的ClearCase存储库 我想在Windows中从Eclipse中打开一个C ++项目,并能够在远程Linux构build服务器上构build项目。 在Eclipse开发的状态下,现在在2013年完成的最好方法是什么? (有一些date的问题,部分解决scheme。)

全局偏移表结构

全局偏移表(ELF)的结构如何查看。 我想了解dynamic链接。 任何人都可以告诉数据结构如何看起来。 我不知何故从来没有在网上find它。

如何build立一个项目(如zeromq)作为静态库,并将其链接到我的项目

我想在我的项目中使用zeroMQ,并运行configuration如下将libaray构build到我的home文件夹中 ./configure –enable-static –disable-shared –prefix=/home/xx/out 然后我链接我的项目 gcc -o myproject xc yc /home/xx/out/libzmq.a 但是仍然有很多链接错误,如下所示: ../zmq/lib/libzmq.a(libzmq_la-ip.o): In function zmq::resolve_ip_interface(sockaddr_storage*, unsigned int*, char const*)': /home/sureone/share/zeromq-2.2.0/src/ip.cpp:221: undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' /home/sureone/share/zeromq-2.2.0/src/ip.cpp:222: undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' ../zmq/lib/libzmq.a(libzmq_la-ip.o): In function zmq::resolve_ip_hostname(sockaddr_storage*, unsigned int*, char const*)': /home/sureone/share/zeromq-2.2.0/src/ip.cpp:314: undefined reference to std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, uns […]

编写primefacesfunction

我想用C语言实现一个primefaces函数,这样进程或线程在执行函数的时候不会被抢占。

在Linux上连续构build

我们有一个小型的C ++ Linux项目,伴随着我们的大型C ++ / MFC Windows项目。 目前,Windows项目使用CruiseControl.net和Visual Build Pro来pipe理连续的构build和集成。 我们想要实现一些东西来启动我们的Linux项目。 我的问题是,我是否应该使用单独的Linux构build工具进行研究,或试图通过利用其自动化并简单地在我们的Linux构build计算机上调用make脚本来实际编译该项目,以使Visual Build Pro正常工作? 更进一步说,由于Linux项目的规模,是不是可以更容易地编写脚本,包括制作快照等等?

创buildELF二进制文件,而不使用libelf或其他库

最近我试图在linux平台上编写一个简单的编译器。 当涉及到编译器的后端时,我决定不使用第三方库(如libelf来生成ELF格式的二进制文件。 相反,我想尝试直接写入机器代码,通过使用write()函数和ELF文件的所有细节来控制ELF ABI文件。 这种方法的优点是我可以控制我的编译器的一切。 但是我很犹豫。 考虑到ELF ABI的详细程度是否可行? 我希望有任何build议和指向良好的可用资源。

如何在我自己的CMake项目中包含现有的CMake git repo作为子模块?

我正在尝试使用OpenKinect项目编写一些程序。 我想将OpenKinect的主分支作为子目录添加到我的项目源文件中。 但是,如果你看看OpenKinect自己的CMake,那里有太多的东西,我不需要一切。 那里有一些选项,被设置为ON或OFF,如下所示: OPTION(BUILD_AUDIO "Build audio support" OFF) OPTION(BUILD_REDIST_PACKAGE "Build libfreenect in a legally-redistributable manner (only affects audio)" OFF) OPTION(BUILD_EXAMPLES "Build example programs" ON) OPTION(BUILD_FAKENECT "Build fakenect mock library" ON) OPTION(BUILD_C_SYNC "Build c synchronous library" ON) OPTION(BUILD_CPP "Build C++ Library (currently header only)" ON) OPTION(BUILD_CV "Build OpenCV wrapper" ON) OPTION(BUILD_AS3_SERVER "Build the Actionscript 3 […]

防止CMakefind已安装的库而不是“本地”库

我正在同时开展多个项目(一些图书馆和一些依靠它们的游戏)。 他们都在GitHub上,在单独的回购。 为了方便起见,我把所有的回购都放在“工作区文件夹”中,像这样: /home/myWorkspace/Library1/ /home/myWorkspace/Library2/ /home/myWorkspace/Library3/ /home/myWorkspace/App1/ /home/myWorkspace/App2/ 我有FindLibrary1 , FindLibrary2和FindLibrary3 .cmake文件,依次查找../ (对应于“myWorkspace”文件夹)和/usr/lib/ 。 在Windows上,CMake在myWorkspace/find库,在Linux上,无论如何,总是先find已安装的库。 因为我想在myWorkspace/文件夹中工作,然后在完成后安装这些库,我希望CMake能够find并链接myWorkspace/文件夹中的所有内容。 如果没有myWorkspace/文件夹,我也希望CMakesearch/usr/lib/和/usr/local/lib/ ,但是如果myWorkspace/存在,它应该具有优先级。 我正在使用的CMake文件的例子: SSVUtils:没有依赖关系的库 SSVUtils CMakeLists: https : //github.com/SuperV1234/SSVUtils/blob/master/CMakeLists.txt FindSSVUtils.cmake: https : //github.com/SuperV1234/SSVUtils/blob/master/cmake/modules/FindSSVUtils.cmake SSVUtilsJson:依赖于SSVUtils和SSVJsonCpp的库 SSVUtilsJson CMakeLists: https : //github.com/SuperV1234/SSVUtilsJson/blob/master/CMakeLists.txt FindSSVUtilsJson.cmake: https : //github.com/SuperV1234/SSVUtilsJson/blob/master/cmake/modules/FindSSVUtilsJson.cmake 任何想法如何我可以优先myWorkspace/文件夹,同时仍有可能在文件系统path中find库?