Articles of 编译器构造

将Nginxbuild成库

我想build立一个静态库(最好)的nginx,但一个DLL也可以工作。 有没有人试过这个? 目前,我没有build立好运气,试图使用lib.exe将.objs构build到lib中,但是当我尝试使用该库时,每个函数都会得到未parsing的外部对象。 我也尝试创build一个DLL从-MT到-LD更改CFLAGS,使用__declspec(dllexport)将主要包装到导出的函数中,但是当我尝试启动nginx主时,出现Access Violation错误。 任何提示,将不胜感激。 我工作的平台是Windows。

在旧版本的linux上运行我的代码

我是Linux编程的新手,我想知道,是否有一种方法可以在相同发行版的较早版本的Linux上运行(不重新编译)我的C ++可执行文件? 例如:说我在RHEL 6上编译我的代码,并想在RHEL 4或5上运行我的可执行文件。 在Windows中,当我们这样做时,我们只安装C ++编译器版本的C ++运行时。 示例:如果我使用VS2012来构build一个使用C ++ 11的C ++项目,我只需要在客户端机器上安装C ++ 11的C ++运行库来运行我的应用程序,而不pipe我使用的是哪个版本的Windows(当然从Windows XP开始)

我可以在预处理器和编译器之间挤压我自己的程序吗?

这是一个愚蠢的问题,或者我可以指定g ++来使用预处理器和编译器之间的程序? 另外,我知道我可以在一个文件(因此所有的文件)上运行预处理器。 然后我猜测有一个开关只运行编译器。 所以我可以手动调用这两个,并把我的程序之间。 如果是这样,我该如何运行编译器(和链接器?)? 我宁愿第一种方法,因为我们的build设者可能不会同意我:)。

如何使用PHP将.NET源文件编译为可执行文件?

使用C#.NET,我写了一个工具栏,现在存储在toolbar.cs文件中。 我想上传这个文件到我的FTP服务器与另一个PHP文件说:compiler.php 我想能够在我访问时编译toolbar.cs文件 http://www.mysite.com/toolbar.php 然后在包含准备下载可执行文件的相同目录中创build一个新文件。 我试图这样做的原因是创build一个网站,为我的用户创build个性化function的自定义工具栏。

如何在编译/链接周期中测量在磁盘I / O上花费的时间?

在Linux系统上,有没有办法在g ++编译/链接周期中测量花在磁盘I / O上的时间? 我有兴趣测量这一指标,然后花钱购买SSD来缩短构build时间。

对于不同的平台(Linux,Windows等),C ++编译器是多次编写的,这是真的吗?

据我所知C ++是一个ISO标准,所以他们提供了一些标准和function列表来实现即将到来的版本。 每个平台的拥有者是否会为这些标准去编写自己的实现? 还是有没有任何核心的编译器代码是一次实现,然后每隔一个平台将编写包装呢? 或者他们从头开始编写自己的C ++编译器?

在Linux服务器上编译Android .apk

我希望能够在我的Ubuntu 10.04 i386服务器上以编程方式为Ant项目(文件夹,.java,.xml等文件)编译.apk文件。 我没有使用Eclipse甚至是一个GUI。 1)我已经按照这些说明: http : //source.android.com/source/initializing.html 2)我在这里下载/解压Android Linux SDK: http : //developer.android.com/sdk/index.html 3)现在,当我导航到/home/myusername/www/android-sdk-linux_x86/tools并键入./android此错误: myusername@myserver:~/www/android-sdk-linux_x86/tools$ ./android Starting Android SDK and AVD Manager No command line parameters provided, launching UI. See 'android –help' for operations from the command line. Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3550 or swt-pi-gtk in swt.library.path, java.library.path or the jar file […]

在gcc中签名:ness optimization“bug”

我的代码有一个警告,我不知道如何避免它。 这是一个代码片段 #include <arpa/inet.h> int main(void) { uint16_t portnbr=0; uint16_t n_portnbr = htons(portnbr); return n_portnbr; } 编译: /usr/bin/g++ -Wconversion -Wall -O2 a.cpp 输出: a.cpp:4: warning: conversion to 'short unsigned int' from 'int' may alter its value 是否有可能避免警告? 没有select修改CFLAGS 。 我的编译器是gcc版本4.3.4 [gcc-4_3-branch revision 152973](SUSE Linux)

混合来自不同C ++编译器的库

我正在一个跨越几个不同的组织的项目上工作redhat 5.2。 每个组织都提供已经用各种版本的g ++编译的库。 目前这些版本包括4.1.1,4.1.2和4.3.1。 我试图将所有库一起链接到一个使用4.1.2的可执行文件。 如果有任何问题,我可以期待这样做吗? 另外,有没有一种方法可以告诉每个编译器版本构build的ABI?

有C#看起来像Linux一样吗?

有C#看起来像Linux一样吗? 那编译器呢?