Developing code for QNX 4.25 on Momentics


I need to write some code for QNX 4.25 that will use name services (qnx_name_locate etc.) and proxies. I’ve downloaded QNX Momentics 6.3 Evaluation and QNX4 Migration Kit: QNX Neutrino Tools.

It’s installed but doesn’t work. GCC compiler can’t find mig4nto.h file. Even If i point to this file explicitly (#include </usr/include/mig4nto.h>, function mig4nto_init() fails.

Please tell me what am I doing wrong.


Why do you want to write code for QNX 4.25? The QNX4 migration kit is for migrating from 4.25->6, not the other way around.

I want to write it, because I’m a student and this task is something like a semestral project. Nevermind. Thanks for reply!

Yes, but why do you want to write it for QNX 4.25? If you have QNX 6 up and running, why not write it for QNX 6?

Unfortunately it is one of the project requirements. QNX 4.25 is the target platform. Are you sure that QNX4 Migration Kit: QNX Neutrino Tools can’t “emulate” some of the QNX4 instructions on QNX6? I’m talking about this package.

Since you are clearly new to QNX I can understand that you are confused about all this, however you what you are saying and asking makes no sense. That is why we can’t help you.

If QNX 4.25 is the target platform for a student project, why don’t you have QNX 4 available to you? This is all very strange since QNX 4 is not available for download, nor can it be used for free for any period of time. The opposite is true for QNX 6. While the hardware support for QNX| 4 is not bad, the support for QNX 6 is much better. If QNX 4.25 is not available to you, then there is no way you can build a QNX 4.25 target. You might just as well ask how you can build a Windows CE or Linux target using Momentics. The migration kit has one purpose, not the one you are hoping for. It helps people who have QNX 4 source code port it to QNX 6. It doesn’t do any emulation. It tells you what QNX 4 routines are available under QNX 6, and which are not, and for the ones that are not, what you need to do to change them.

The Migration kit allows you to take a QNX4 program, recompile it and have it run on QNX6. That’s the theory in practice it doesn’t always work. But the kit is not made to generated QNX4 executable from QNX6.

QNX4 and QNX6 are compatible. If you must generate an executable to runs on QNX4 then you must build it with QNX4 tools. QNX6 will not help you there.

I have access to QNX 4.25, but only during classes.

I’ve hoped I could wrote some code at home using QNX 6. I don’t want to generate QNX4 executables on QNX6 platform. What I would like is to write QNX4 program (using qnx_name_locate, proxies etc.) and be able to compile this code on QNX6. I thought this is what migration kit does - “emulates” qnx_name_locate using proper QNX6 functions. Am I right?

Sorry for my english and misunderstandigs. Once again thanks for quick reply.

Then it’s ok.

I don’t know why you can’t compile though. As for the init fonction not working it could be because you didn’t start the server that is part of the migration kit.

Ok, well this does make sense. You might get away with this, but I doubt it. The problem is that while functionally the two systems are very similar, the details are different enough to cause you lots of trouble. The migration library will only ease the pain slightly. As I said, its intended use is to help people with working QNX 4 code port it to QNX 6 more easily. Some of QNX 4 is emulated directly by QNX 6, eg. fopen()
fread(), etc. The important stuff like Send()/MsgSend() is not. You could build a layer for QNX 6 and a set of libs to separate this, but the effort does not seem worth while. If this was easy, I think QSSL or someone would have provided it already. There are certain things that will not port well at all, ie. Proxies vs. Pulses. I’d ask the professor why he doesn’t just let you load one of the class machines with QNX 6, and write the project in QNX 6.

Mitch, the migration kit does provide “emulation” for things like Send/Receive/Reply and for proxies as well.