mirror of
https://github.com/netdata-be/libnodave
synced 2025-10-13 00:42:50 +08:00
97 lines
4.7 KiB
Plaintext
97 lines
4.7 KiB
Plaintext
How to compile in different enviroments:
|
|
|
|
1. Linux on i386: Just type make. Type (as root) make install. This will:
|
|
copy libnodave.so to /usr/local/lib
|
|
copy nodave.h to /usr/local/include
|
|
|
|
2. Linux on ARM:
|
|
Uncomment the line: #CFLAGS+=-DARM_FIX in Makefile
|
|
For cross development, replace CC= and LD= with the appropriate paths to your ARM compiler
|
|
and linker.
|
|
Do make.
|
|
Either do make install or copy libnodave.so to the target system.
|
|
|
|
3. Linux on MIPS:
|
|
For cross development, replace CC= and LD= with the appropriate paths to your MIPS compiler
|
|
and linker.
|
|
Do make.
|
|
Either do make install or copy libnodave.so to the target system.
|
|
|
|
4. Microsoft Visual C++
|
|
Adjust the path to nmake in vcwinmake.bat.
|
|
Adjust paths in MAKEFILE.VC to your installation.
|
|
Run batch file vcwinmake.bat.
|
|
|
|
5. Borland Free Commandline Tools
|
|
Adjust the path to make in winmake.bat.
|
|
Adjust paths in MAKEFILE.MAK to your installation.
|
|
Run batch file winmake.bat.
|
|
|
|
6. Microsoft Visual C++ on LINUX under Wine
|
|
Adjust paths in MAKEFILE.VC.WINE to your installation.
|
|
Run make -f MAKEFILE.VC.WINE. This will use GNU make to build everything.
|
|
|
|
7. Borland Free Commandline Tools on LINUX under Wine
|
|
Adjust the path to make in winemake script.
|
|
Adjust paths in MAKEFILE.MAK to your installation.
|
|
Run script winemake
|
|
|
|
Hint: I use
|
|
|
|
make -f MAKEFILE.VC.WINE
|
|
|
|
on a Linux box to compile the windows stuff. While I TRY to keep the other makefiles up to date,
|
|
this file is where you should look for compiler options and filenames and compare to your setup
|
|
if you have difficulties to reproduce the same results.
|
|
|
|
from the FAQ:
|
|
|
|
Q: I try to compile my source code which includes nodave.h. Why do I get:
|
|
"#error Fill in what you need for your OS or API" ?
|
|
A: Libnodave has to use different functions to read byte data from serial ports or TCP/IP streams
|
|
depending on the operating system. You have to specify which OS you compile for.
|
|
Define BCCWIN for Windows and LINUX for Linux or other Unix style operating systems. I do
|
|
that using -DBCCWIN or -DLINUX when I call the compilers out of a Makefile. If you use an IDE
|
|
(integrated development environment), refer to the IDE's documentation to learn where to do
|
|
this. If you can't find out, you can help yourself putting the #define into your code (which
|
|
means your code will not be portable to other OS without modification). example:
|
|
|
|
...
|
|
#define BCCWIN // if you work on windows
|
|
#include nodave.h // or nodavesimple.h, but NEVER both
|
|
#include setport.h // if your code works with serial connections
|
|
#include openSocket.h // if your code works with TCP/IP
|
|
...
|
|
Q: I try to compile libnodave from source code. There are problems.
|
|
A: - You do not need to compile libnodave yourself. You won't do it with other DLLs (windows)
|
|
or .so (Linux shared libraries). Normally, you will link such libraries dynamically with
|
|
your code.
|
|
- Nevertheless, you have the sources and you may chose to recompile it, recompile only the
|
|
parts you need, etcetera.
|
|
- You should know that S7 uses Motorola (big endian, high byte first) byte order (endianness)
|
|
while Intel processors use Intel (little endian, low byte first). On Intel and similar
|
|
machines, libnodave has to convert multibyte values. This is done in daveGetS2(), daveGetU2(),
|
|
daveGetFloat() and friends. The conversion code is only compiled in if you #define
|
|
DAVE_LITTLE_ENDIAN. Otherwise, big endian is assumed.
|
|
- Be aware that I do compile releases of libnodave using gcc (for Linux) and MSVC++
|
|
(for windows). I use the script buildall to build Linux and Windows release versions and test
|
|
programs on a Linux box. Buildall uses Linux make with MAKEFILE.VC.WINE to invoke the MSVC++
|
|
compiler for windows versions. There is also a MAKEFILE.VC which should work on a windows
|
|
system using nmake, but it may be out of date :-(. If in doubt about compiler options or
|
|
source files involved, refer to MAKEFILE.VC.WINE!
|
|
|
|
Q: I want to compile libnodave for another OS. What adaptions shall I have to make?
|
|
A: - I suppose your OS is 32 bit and your compiler treats int as 32 bit. If not, you are in
|
|
trouble!
|
|
- You need to provide functional replacements for setport.c or setportw.c and openSocket.c or
|
|
openSocketw.c
|
|
- nodave.h: You need to define a record _daveOSserialType containing members:
|
|
rfd: a data type that can refer to a serial port or a TCP socket for read access
|
|
wfd: a data type that can refer to a serial port or a TCP socket for write access
|
|
- nodave.c: You need to code functions stdread() and stdwrite() to read and write a number of
|
|
bytes from/to a serial port to/from a buffer.
|
|
|
|
|
|
|
|
|
|
|