By
Juwen
Http://juwen.blog.51cto.com/135311/117610
The first compilation starts here. Anyone who often downloads open-source projects and debugs them knows that the first compilation is the key to success, many times, after downloading open-source projects, the differences between machines, environments, and software, in many cases, compilation fails (as if I think most of them cannot be successful upon compilation ). First, download the downloaded file howtocompile.txt. I will post the key part and view the document by myself. /////////////////////////////////////////
Modules
/////////////////////////////////////////
Oggplay comes in two modules.
An application for oggplay application and a DLL for the Ogg Vorbis decoder.
Because of the plugin nature of the decoder, the application and the decoder
Are separate entities, and each must be compiled separately.
The principle is that the program and decoder must be compiled separately.
/////////////////////////////////////////
Non-MMF and MMF versions
/////////////////////////////////////////
Oggplay comes in two flavor, the non-MMF and the MMF version. In the MMF version,
The Ogg Vorbis decoder is an MMF plugin, that can be used by any application,
Like the built-in music player, for instance.
The MMF version requires OS support for MMF. This support is available from Symbian 7.0 S.
Series60 sdks 2.0 or higher is required to compile the MMF version for Series 60.
There are two versions. One is MMF and the other is not MMF. You can choose to compile it based on your needs. Don't ask me what MMF is./////////////////////////////////////////
Compilation flags
//////////////////////////////////////// /Compilation flags shoshould be set before starting to do any compilation.
All compilation flags are in oggos. h.
There are several flags in that file, but basically, only 5 flags shocould be
Modified, the others are OK as they are.
# Define series60: When set, compilation is done for s60
# Define uiq: When set, compilation is done for uiq # define os70s: When set, MMF is used. # define MOTOROLA: When set, compilation for Motorola uiq (a92x)
# Define sonyericsson: When set, compilation is done for P800/p900
In fact, you can ignore this because the header file of oggos. h does not contain this part of content.
. This document should be of an earlier version. Because oggplay contains many system versions, the code in it will be compiled selectively. Let's talk about it later. In any case, you don't need to worry so much about the first compilation. Temporarily
We only need to select the appropriate bld. INF. For details, see the folder structure. I use s60v3mmf for compilation. Therefore, use/groups60v3mmf directly. I
If you need something, you can ignore it./////////////////////////////////////////
Compilation for target Device
/////////////////////////////////////////
To compile the code for target (this expects a valid Symbian compilation environment ):
For non-MMF version:
Edit the file Vorbis/group/bld. inf so that oggvorbis. MMP is used.
CD/Vorbis/group
Bldmake bldfiles
Abld build armi CD/group
Bldmake bldfiles
Abld build armi for MMF version:
Edit the file Vorbis/group/bld. inf so that oggplugindecoder. MMP is used.
CD/group
Bldmake bldfiles
Abld build armi
CD/Vorbis/group
Bldmake bldfiles
Abld build armi note that the order is reversed in MMF case: the application is built first, and
Mmf plugin built afterward.
To compile the command. This can be said to be the key point of the problem. At the beginning, I had a lot of detours because I was not very familiar with the Symbian development environment. Instead of using the command line, I used carbide C ++ for compilation. Several Link errors were reported. Search on Google. None of the same information is found.Severity and description path
Resource location creation time Id undefined symbol:
'_ Ogg_sync_bufferin' [] oggplay unknown 1228526161234 1072
Several similar errors. All versions are compiled, and the results are similar errors. Then I try to use the command line to compile.
RunAbld build armi
PromptThis project does not support platform.
This is a good solution. I found it online. It turns out to be divided into winscw, gcce, and armv5. Check the information by yourself. I installed the GCC tool chain. Therefore, change the code.Abld build gcce urel play/groups60v3mmf/oggplays60v3mmf/gcce/oggplays60v3mmf. gcce "resourceurel
Make [1]: *** no rule to make target '/Symbian/carbide/symbianoggplay/bitmaps/s60
V3mmfsplash.bmp ', needed by'/Symbian/9.2/s60_3rd_fp1/epoc32/data/z/private/f000
A661/oggsplash. MBM'. Stop.
Make: *** [resourceoggplays60v3mmf] Error 2
Make-r-F "/Symbian/9.2/s60_3rd_fp1/epoc32/build/Symbian/carbide/symbianoggp
Lay/groups60v3mmf/gcce. Make "target CFG = urel verbose =-S
Make-S-r-F "/Symbian/9.2/s60_3rd_fp1/epoc32/build/Symbian/carbide/symbianogg
Play/groups60v3mmf/oggshareds60v3mmf/gcce/oggshareds60v3mmf. gcce "urel
Utf8fix. c
Cc1.exe: Warning: command line option "-wno-ctor-dtor-Privacy" is valid for C ++/
Objc ++ but not for C
In file encoded ded from/Symbian/carbide/symbianoggplay/shared/oggshared. h: 23,
From/Symbian/carbide/symbianoggplay/shared/utf8fix. C: 38:
/Symbian/9.2/s60_3rd_fp1/epoc32/include/e32def. h: 2803: Error: initializer elemen
T is not constant
Make [1]: *** [/Symbian/9.2/s60_3rd_fp1/epoc32/build/Symbian/carbide/symbianoggpl
Ay/groups60v3mmf/oggshareds60v3mmf/gcce/urel/utf8fix. O] Error 1
Make: *** [targetoggshareds60v3mmf] Error 2
Make-r-F "/Symbian/9.2/s60_3rd_fp1/epoc32/build/Symbian/carbide/symbianoggp
Lay/groups60v3mmf/gcce. Make "final CFG = urel verbose =-S
Still wrong. Catch up with the end. Another round of search, query information. Later I read a Big Brother's article, and it is estimated that there was a problem with function export at the beginning.Hi jacjames,
Frozen exports are a common issue when
Dealing with a DLL type projects unfortunately. I'm not sure exactly
How to work it out through codewarrior but if you type 'abld freeze
Winscw 'on a command prompt while inside the/group directory you'll
Get those exports frozen. After that you should be able to compile
Normally on codewarrior or on the command prompt ('abld build winscw
Udeb' is the command ).
In the off chance that it doesn' t work
(Abld is tricky) Delete the bmarm and bwins (if there is one)
Directories. Don't worry, abld shoshould recreate them.
Regards,
Francisco Pimenta
I also have some learning examples. FirstAbld freeze winscw
Compile again. Actually passed. There will be some prompts during the period that you cannot find errors such as s60v3mmfsplash.bmp. Just make a picture on your own.