If you like long, explicit file names, and that you’re working with vrxcc (the Verifone eVo/Verix SDK compiler), you may sometimes notice that your output file name gets truncated and doesn’t have the expected extension. That’s a bug in the vrxcc compiler (versions <= 1.3 ), and it may cause many headaches.
For example, the command
won’t give any error or warning, but will generate the following output files
Notice how the “.out” file name is shorter than the “.cpp” and the “.o” ones. The vrxcc output file is always truncated to 32 characters.
The limitation become obvious if you specify the name of the output in the vrxcc command :
vrxcc 0123456789012345678901234567890123456789.cpp -o 0123456789012345678901234567890123456789.a
You’ll now get a warning :
vrxcc: Warning: Output file name truncated
Confirmed by the resulting output :
Notice that the output file name is shorter, but also that its extension is not the expected one : a “.out” instead of a “.a”. If ever an output file name is longer than 32 characters, vrxcc will truncate it to 29, and then append a default “.out” extension.
This is painful, because it breaks linking in makefiles when output file names are stored in variables. If using a makefile, you can fix the issue by manually renaming the truncated file names before the linking. If using an IDE (like RVDS), this is trickier because you often can’t run custom steps after compilation and before linking. Your solution in this case ? Shorten your file name to less than 32 characters, and hope that Verifone will eventually fix the problem.