Next
Previous
Contents
As usual, we will start with the famous "Hello world" program. The source
code for hello.nlm is available in the nlm-samples package. You can download
it from
ftp://ftp.penguin.cz/pub/users/mhi/nlm/.
#define N_PLAT_NLM /* Define dest. platform */
#include <nwconio.h> /* ConsolePrintf */
int
main (int argc, char **argv)
{
int i;
ConsolePrintf ("\rHello world!\n\n"); /* print on system console */
ConsolePrintf("Arguments:\n"); /* all arguments */
for (i=0;i<argc;i++)
ConsolePrintf("argv[%u]=\"%s\"\n",i, argv[i]);
return 0; /* exit NLM */
}
#
# hello.def - NLM Header definition file for nlmconv(1)
# Copyright (c) 2000 Martin Hinner <mhi@penguin.cz>
#
# define startup object files
INPUT hello.o
INPUT /usr/nwsdk/lib/prelude.o # clib startup code
# all imported functions and import lists
IMPORT @/usr/nwsdk/imports/clib.imp # Functions in CLIB.NLM
IMPORT @/usr/nwsdk/imports/threads.imp # Functions in THREADS.NLM
# NLM header...
OUTPUT hello.nlm # output file
TYPE 0 # Ordinary NLM
VERSION 1,0,0 # Version 1.0
COPYRIGHT "Copyright (c) 2000 Martin Hinner <mhi@penguin.cz>" # (c) ...
DESCRIPTION "Simple 'Hello world' NLM module." # title of nlm
SCREENNAME "System Console" # Default screen name
MODULE CLIB,THREADS # req'd modules
# makefile for "hello world" NLM
CC = gcc
CFLAGS = -Wall -O2 -g -I/usr/nwsdk/include/ -nostdinc -fno-builtin -fpack-struct
hello.nlm: hello.o hello.def
nlmconv --output-target=nlm32-i386 -T hello.def
hello.o: hello.c
$(CC) $(CFLAGS) -c hello.c
You must pass these arguments to the gcc:
- -fno-builtin:
GCC's fast builtin functions sometimes cause server to abend,
so we don't want to use them.
- -nostdinc:
Only include files in /usr/nwsdk/include are valid for NLMs (don't
forget to use also -I/usr/nwsdk/include).
- -fpack-struct:
GCC's struct packing method is not valid for Novell NetWare, so we
won't use it. Thanks to Gabor Keresztvalvi for this information.
Copy hello.nlm to the SYS:\SYSTEM directory on your NetWare server. Then, on
the system console, type "load hello.nlm". If everything went fine, you should
see NLM version information, a copyright message and "Hello world".
Next
Previous
Contents
|