Sono simpatico...

作茧自缚,等待破茧成蝶的那一刻!

小试fpc交叉编译:从Linux到Win32

刚刚小小的试了下,程序是一个简单的dll外加一个 调用它的exe。(需要装上这个才能编译:fpc-crosswin32_2.0.4-060919_i386.deb)这两段简单的程序如下。

app.pas

 1 program 
2
3
4
5 procedure
6 function ,
7
8 var
9 ,
10 begin
11
12 ,
13 ,,,,,
14 end.

win32lib.pas

 1  
2
3
4
5 procedure
6 begin
7
8 end
9
10 function ,
11 begin
12
13 end
14
15
16 ,
17
18 begin
19 end.

程序没什么好说的,编译的时候带上-Twin32参数就行了。然而,在成功连接成DLL之后,会出现一个错误。这个错误我个人估计100%是bug。
stlxv@stlxvcomputer:~/samples/freepascal/win32_dll$ fpc -Twin32 win32lib.pas 
Free Pascal Compiler version 2.0.4 [2007/02/02] for i386
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Win32 for i386
Compiling win32lib.pas
Linking win32lib.dll
/usr/bin/fpc-i386-win32-dlltool: Unable to open object file:
win32lib.pas(19,1) Error: Error while linking
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
写句出错的话不要紧,要紧的是,整个fpc的返回值不是0。假如在Makefile中,这将导致整个make过程的失败。

对于这个问题,有个仁兄写了个wrapper来解决。也正式这篇文章让我有欲望来写这一篇东西。
 1 
5 program
6
7
8 , ,
9 var
10
11
12
13 begin
14
15 For to do
16
17 ,
18 nil
19
20
21
22
23 end.
好在shell是强大的。所以这个问题可以很容易地解决。所以,最后的Makefile就成这样了-_-!。为了让这个Makefile见得了人,我重新改了一下,汗死...

Makefile

 win32

fpc -o -Twin32 $^

fpc -o -Twin32 $^ || exit 0
app.exe win32lib.dll
win32lib.pas
app.pas

rm -rf *.dll *.exe *.o *.s *.res *.///
win32 clean all
.pas .exe .dll

写这篇文章还有一个好处,至少让我用熟了code2html,同时也知道了在pascal方面pas2html和code2html都不怎么好用(看上面的结果就知道了,一部分经过我的再排版)。汗死...



 
阅读更多
个人分类: linux FreePascal
上一篇[图文]Ubuntu的802.1x解决方案:Xsupplicant
下一篇其实并不了解:从0到第一个C程序的成功运行的笔记
想对作者说点什么? 我来说一句

FPC技术参数FPC技术参数

2010年09月14日 103KB 下载

FPC基础知识

2014年08月20日 3.3MB 下载

FPC实例CAD线路图

2014年04月17日 869KB 下载

AD9下的FPC封装

2013年05月11日 409KB 下载

FPC命名规则

2012年12月13日 76KB 下载

没有更多推荐了,返回首页

关闭
关闭