I ran into the exact same issue discussed here: https://r1132100503382-eu1-3dswym.3dexperience.3ds.com/#community:39/iquestion:4mDmkMpDSrCq_ReqGW8r8A
I have a .cpp file that defines a user subroutine (SIGINI in my case). I recently upgraded from Abaqus 2023 to Abaqus 2024.
The subroutine is compatible with Abaqus 2023. With Abaqus 2023, I used "abaqus make library=my_subroutine.cpp" and it produced a .o and .so file. I could then use the .o file when running a job via "abaqus job=Job-1.inp user=my_subroutine.o interactive" and everything worked as expected. I also sometimes just passed the .cpp file directly via "abaqus job=Job-1.inp user=my_subroutine.cpp interactive" and everything worked too.
With Abaqus 2024, something appears to be broken. Note that I am using Red Hat Enterprise Linux 8.9, Intel Fortran compiler version 2024.0.2, and gcc version 12.2.1. All verification tests pass when I run "abaqus verify -all". When I issue "abaqus make library=my_subroutine.cpp", .o and .so files are produced without any errors. When I issue "abaqus job=Job-1.inp user=my_subroutine.o" I get the error "Subroutine object file does not contain an Abaqus user subroutine". However, when I issue "abaqus job=Job-1.inp user=my_subroutine.cpp" the simulation runs without any problems. For some reason using the .o file produced by the "Abaqus make" utility doesn't work. Now, this doesn't sound like a massive issue because I should just be able to use the "abaqus job=Job-1.inp user=my_subroutine.cpp" form of the command. But for my use case, I am using Abaqus' Python API to run jobs with user subroutines. In Abaqus' Python API, the only way to associate a user subroutine with a job is to set the userSubroutine attribute of a ModelJob object via the setValues() method. And the userSubroutine attribute can only be set to a .f or .o file, it cannot be set to a .cpp file. And since the .o file produced by the "Abaqus make" utility is somehow broken, it's impossible to use the .cpp file which defines a user subroutine with Abaqus' Python API.
The moral of the story is that, for Abaqus 2024, I believe there is an issue with the "Abaqus make" utility which causes it to produce bad .o files.
I was able to find a workaround to this issue, however. As stated above, the "abaqus make library=my_subroutine.cpp" does produce .o and .so files successfully. By setting the usub_lib_dir variable in my .env file to the directory containing the .so file, and then running my script (with the part of the script that sets the userSubroutine attribute removed) which uses Abaqus' Python API, everything works correctly.
Can someone confirm that the "Abaqus make" utility associated with Abaqus 2024 produces unusable .o files?
Also, is there any way to associate a .cpp file (not a .o file or a .f file) defining a subroutine with a job via Abaqus' Python API?