Jump to content
Excelsior Forums
Sign in to follow this  

Safety of PDB files persistence

Recommended Posts


I was performing some testing for multi-component JET applications and I have couple of questions.

  1. System requirements:
    1. The documentation is mentioning the following minimal system requirements for Linux OS:
      1. glibc >= 2.12
      2. linux kernel >= 2.6.32
    2. What does this practically mean? Is JET compiler internally using glibc in the given version?
    3. Will all of the produced executables/shared libs be runnable under any Linux OS system that contains at least the given glibc?
    4. What compiler/linked is used for the produced executable/shared libs?
  2. Project Data Base files
    1. Are *.pdb files system independent on the same OS family (e.g. Ubuntu Linux)?
    2. Is it possible to safely cache PDB files on the same machine for later usage?
      1. In our case it will be very beneficial to pre-compile all external JARs into SO files and only re-compile the application JAR file. For that we will need PDB files (which we can store in artifact repository).
      2. Would that work?
    3. Multiple files in the "project_jetpdb" directory are created, but it seems like not all of them are necessary (executable will be compiled and linked without them). Can you please verify the following assumptions are correct?
      1. bod.pdb (necessary),
      2. xyz.efs (not necessary),
      3. xyz.rsp (not necessary),
      4. xyz.env (becessary),
      5. lambdaclasses.pdb (not necessary and looks like dynamically generated at each run),
      6. obj.zip (not necessary),
      7. rdf.pdb (not necessary and looks like dynamically generated at each run),
      8. sym.pdb (necessary)

Thanks, Martin

Share this post

Link to post
Share on other sites

Hi Martin,

Let me answer to your questions referring to their numbers only.

1.2. Yes. In fact, glibc is just a standard system library so any linux application depends on it.

1.3. Yes, but note that there is section Compliance Tests. Given the large variety of linux distributions we cannot guarantee totality of support.
Also note that if you're building a native (ex. C/C++) library it is not JET-compiled and thus might require higher version of glibc/kernel depending on its compiler settings and build environment.

1.4. JET-compiled applications/libs are compiled by `jc` and linked by `xlink` -- internal compiler and linker placed in $JET_HOME/bin.

2.1. Yes.

2.2.2. Yes, that should work. But note that in JET 15 (scheduled to May) we plan to rework smart recompilation and some things regarding *pdb might change.

2.3. All of those files are used at some step of build process. Removing some of them might result in partial or full recompilation.
For example in obj.zip all object files (machine code from compiler) are written and from them the linker composes resulting exe/so.

Kind regards,
Igor Jorch,
Excelsior Support.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this