tcpdump mailing list archives

Re: Need precompiled source files in libpcap


From: Guy Harris <guy () alum mit edu>
Date: Thu, 30 Jun 2016 14:14:42 -0700

On Jun 30, 2016, at 12:59 PM, Yang Luo <hsluoyb () gmail com> wrote:

But I encountered an issue here, the built out scanner.h and scanner.c will report these errors:

1>  gencode.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
1>  grammar.c
1>..\scanner.h(239): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
1>..\scanner.c(2787): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

It seems that these generated source files want to include a UN*X only file "unistd.h", which is not available on 
Windows, like you said in the next reply. I think I need to switch some options to let Flex not use "unistd.h", how 
to do it?

OK. I found the solution. I changed the bat to:

win_flex -Ppcap_ -7 --nounistd --outfile=..\scanner.c --header-file=..\scanner.h ..\scanner.l
win_bison -ppcap_ --yacc --output=..\grammar.c --defines ..\grammar.y

And Flex won't let the generated source filess require "unistd.h" any more.
 

When this bat is done, I think I will make MSVC run this bat every time before a build process starts, is this 
solution OK for you?

That'd one way to do it.  Another way is to have the project define YY_NO_UNISTD_H - that's what CMake does.

And installing flex and bison for Windows are not also very friendly.

        https://twitter.com/geraldcombs/status/735870968451629056

In fact I didn't catch the meaning very well.. What's a "IKEA motorcycle engine"? I think "IKEA" is a furniture 
vendor? What does it has to do with the motorcycle engine?

A lot of the furniture that IKEA sells is un-assembled, so you take it home in a flat package and assemble it at home.

For furniture, that works.

But if IKEA sold motorcycle engines that way, it wouldn't work as well:

        http://www-psych.stanford.edu/~bt/diagrams/papers/animationearli04_files/image012.png

You'd have a *lot* more work to do to assemble it, and you'd have to know a *lot* more in order to do it right.

Does it mean that building open source on Windows is very painful and inconvenient?

Pretty much, yes.

When you want to build open-source software on a UN*X, as long as you have all of the necessary tools and libraries 
installed, it's usually just ./configure; make; make install - or maybe

        mkdir build
        cd build
        cmake ..
        make
        make install

if it's using CMake, and the necessary tools and libraries are usually either

        1) installed by default;

        2) installable as a package provided by the OS developer;

        3) installable from a third-party binary package;

        4) installable from source.

A lot of this is because most UN*Xes are very similar, with the differences mostly being relatively minor annoyances.

On Windows, you may need built-for-Windows - or even ported-to-Windows - versions of the same tools and libraries, and 
the autotools (configure script) often don't work.  If the project uses CMake, it might work, although even there you 
may have to do a bunch of "if(WIN32)" in the CMake files.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: