linux如何编译wine,利用winelib编译一个可在linux下运行的程序

利用winelib编译一个可在linux下运行的程序

只是想既可以使用linux的api,又可以使用windows的api

#include

#include

#include

#include

int main(int argc, char* argv[])

{

printf("long %d\n", sizeof(long));

system("lspci");

char bufr[256];

gethostname(bufr, sizeof(bufr));

strcat(bufr, " says, 'Howdy World!'");

MessageBox(NULL, bufr, "Junk", MB_OK);

return(0);

}

在64位机器上编译

winegcc -m32 -o  junk junk.c

得到

linux-b460:/home/winelib # ls

junk.c  junk.exe  junk.exe.so

运行

wine junk.exe.so

运行结果

linux-b460:/home//winelib # wine junk.exe.so

long 4

00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 18)

00:06.0 PCI bridge: Intel Corporation Core Processor Secondary PCI Express Root Port (rev 18)

00:1a.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)

00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 05)

00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 05)

00:1c.4 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 5 (rev 05)

00:1c.5 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 6 (rev 05)

00:1c.6 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 7 (rev 05)

00:1c.7 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 8 (rev 05)

00:1d.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)

00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)

00:1f.0 ISA bridge: Intel Corporation 3400 Series Chipset LPC Interface Controller (rev 05)

00:1f.2 IDE interface: Intel Corporation 5 Series/3400 Series Chipset 4 port SATA IDE Controller (rev 05)

00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 05)

00:1f.5 IDE interface: Intel Corporation 5 Series/3400 Series Chipset 2 port SATA IDE Controller (rev 05)

01:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1068E PCI-Express Fusion-MPT SAS (rev 04)

05:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

06:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

07:05.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 10)

Application tried to create a window, but no driver could be loaded.

Make sure that your X server is running and that $DISPLAY is set correctly.

err:systray:initialize_systray Could not create tray window

Application tried to create a window, but no driver could be loaded.

Make sure that your X server is running and that $DISPLAY is set correctly.

可以看到system是linux的api

messagebox是win的api,但是没有在x环境下所以报错

去掉-m32也编不过,也就是还只能生成32位的程序,对我用处不大,仅记录之

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux Wine(即"Wine Is Not an Emulator")是一种允许在Linux操作系统上运行Windows应用程序的兼容层。它的原理是通过重新实现Windows API(应用程序接口)来模拟Windows环境,从而使得Windows程序能够在Linux上正常运行。 首先,Wine使用了一种名为"Wine API"的工具库来替代Windows API。这些库中包含了许多与Windows API相同或相似的函数,允许Windows应用程序Linux环境中执行相同的任务。Wine还提供了一套以二进制形式存储的Windows系统文件,如.dll文件和.exe文件。这些文件可以被应用程序加载和运行,使得它们能够在Linux中模拟Windows环境。 其次,Wine还提供了一个称为"Winelib"的开发工具集。Winelib允许开发者将他们的Windows应用程序源代码编译Linux下可执行文件。这使得开发者能够在Linux编译Windows应用程序,而不需要对代码进行大幅修改。Winelib还提供了一些转换工具,使得开发者能够将原本只能在Windows上编译的代码转换为可在Linux上正常编译的代码。 另外,Wine还提供了一些其他的支持,如对图形和音频的处理、对Windows注册表的模拟、对.NET框架的支持等。这些功能进一步提升了在Linux运行Windows应用程序的成功率和性能。此外,Wine还允许用户通过配置文件来调整和优化其性能和行为。 总之,Linux Wine通过重新实现Windows API、提供相关的工具库和文件,以及提供其他支持功能,使得Windows应用程序能够在Linux运行。它为Linux用户提供了一种便捷的方式来使用和享受Windows应用程序的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值