Sadly, Linux is not a platform for stable development, there are at least 2 
bugs we found in toolchain (gcc46), one is critical, i reported it but no 
answers.
One bug with debug sections (check your log for: cannot fill debug link 
section) - it will stop DEBUG() macro from working, and another bug simply 
corrupt pointer in some cases (try to run GetHostByDns.efi and it will ASSERT). 
gcc45 & gcc44 not work at all on my setup (ubuntu 12.10, latest svn rev).

Errors in StdLib you mentioned really exist, can't comment on your main (  IN 
int Argc,  IN char **Argv  ) issue.

Overall, after 2.5 months of studying/developing for UEFI implementation from 
Intel I got impression it is in pre-alpha stage and you should expect lots of 
bugs.

Good luck in your work

________________________________________
From: Mauro Faccenda [facce...@gmail.com]
Sent: 11 January 2013 18:24
To: edk2-devel@lists.sourceforge.net
Subject: [edk2] difficulties getting started with EDK2 Development

Hi all,

I am trying to get started with EDK2 development and I'd like to
report some difficulties I had and am having.

If any of you can point to some way to fix or even better way of doing
anything, I'd appreciate.

I am willing to use a plain Ubuntu 12.04 64bits as development
platform as it comes with GCC 4.6 which seems to be well supported by
the EDK2 and BaseTools.

But here comes to me the first question: which (if any) are the
recommended (default) platform for development? I guess it is using
Windows with VS since the configuration comes with all parameters set
to use it. But I'd like to know If there is any 'better supported'
Linux platform (distro, distro version+gcc version).

The Project Wiki mentions Ubuntu 9.10, 10.10 and 10.04, and GCC 4.4,
but doesn't recommend any.

For instance, I followed this documentation:
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Using_EDK_II_with_Native_GCC_4.4

Moving on, as I want to play with network connections, I built my own
OVMF with the Intel's E1000 Network drivers successfully using the
sources from EDK2 trunk.

I already could run qemu with network support (using tap + bridge with
host physical interface) and use ping.efi (from the EDK2 Toolkit)
against devices on my network, also no problems besides the latency
being a bit high (>400ms, from the host I get less than 1ms).

Then I started building some applications to test running in the
environment. I've built the MdeModulePkg and could run some of them.
But when I tried to build AppPkg I got the following error:
$ build -t GCC46 -a X64 -p AppPkg/AppPkg.dsc
[...]
edk2/StdLib/LibC/Containers/Queues/Fifo.c:508:27: error: assignment
from incompatible pointer type [-Werror]
cc1: all warnings being treated as errors

As it seems to be a warning promoted to an error, I manually ran the
same gcc command removing the -Werror parameter and it compiled
successfully.

Is this a bug? Should I report?

Then I ran the build command again, which brought another error:

edk2/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.c:269:1: error:
conflicting types for ‘IIO_CursorDelta’
edk2/StdLib/LibC/Uefi/InteractiveIO/IIOutilities.h:122:1: note:
previous declaration of ‘IIO_CursorDelta’ was here

I opened both files looking for the definition of IIO_CursorDelta and
in .h file I got:
--
int
EFIAPI
IIO_CursorDelta (
  cIIO         *This,
  CURSOR_XY    *StartXY,
  CURSOR_XY    *EndXY
  );
--
while in the .c I got:
--
UINT32
EFIAPI
IIO_CursorDelta (
  cIIO         *This,
  CURSOR_XY    *StartXY,
  CURSOR_XY    *EndXY
) [...]
--

So I changed the .h from int to UINT32 and ran the build again. This
time with success. Should I report this?

After that, I started to play with AppPkg/Applications/Main/Main.c,
trying to poke around to see what I can or can't do and got something
strange. I've changed the Main.c to just print the Argc value:
--
#include  <stdio.h>
int
EFIAPI
main (
  IN int Argc,
  IN char **Argv
  )
{
  printf("\nArgc=%d\n", Argc);
  return 0;
}
--
And whenever I run it on UEFI Shell (using qemu), I always get really
big values (> 37000000) no matter with how many parameter I run and if
I run with the same parameter multiple times, the value sometimes
changes, as you can see on the image below:

http://s1.postimage.org/dxeg7ahdr/argc.png

This isn't exactly a problem, since I still can successfully run
normal code but I'd like to know if am I doing something stupid, if
this is some kind of bug or if it is a side effect of something I
couldn't see yet.

Any tips or clarifications will be really appreciated.

Anyway, thanks for the good job you all have been doing on this project. =)

Mauro Faccenda

------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only - learn more at:
http://p.sf.net/sfu/learnmore_122512
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to