febiosoftware / FEBioStudio

https://febio.org/
MIT License
64 stars 22 forks source link

FEBioStudio fails on Ubuntu 18.04 #18

Closed t-sanders closed 3 years ago

t-sanders commented 4 years ago

I cannot get FEBioStudio to work on Ubuntu 18.04. Version 1.0.0 and 1.0.2 both produce "ERROR TERMINATION" on ANY run. Message is:

FEBioStudio on Windows works fine. Can anyone confirm correct workings on Ubuntu 18.04?

michaelrossherron commented 4 years ago

I am unable to reproduce this issue on Ubuntu 18.04. There could be a few things that are causing this issue on your end.

The problem could lie in the individual model files that you are trying to run. Please test a problem from the Test Suite. To do so, go to the Repository Panel in FEBio Studio and press the connect button to connect to the repository. Once connected, expand the Test Suite category, then expand the Contact project under that category. Double-click on the first file in that project (co01.feb) to download and open it. Once it's open, go to FEBio->Run FEBio... in the main menu and run the problem. This problem normal terminated almost instantly for me on Ubuntu 18.04.

If this still ends in an error termination for you then it's possible that your launch configuration is pointing to an old version of FEBio that possibly has some bugs. To ensure that you're using the version of FEBio that shipped with your current version of FEBio Studio, open the Run FEBio dialog, and next to the Launch Configuration drop-down menu, click the Edit button (the one with the clipboard). This will open the Launch Configuration dialog. Either edit the current launch configuration, or create a new one with the Launch Type set to Local, and the following text in the FEBio Executable box:

$(FEBioStudioDir)/febio3

Click OK, and confirm your changes. Back on the Run FEBio dialog, ensure that you have your newly-edited launch configuration selected and try running the problem again.

If this normal terminates for you, then the problem likely lies with the files that you were trying to run before. If that's the case, and you would like some help trying to debug those runs, please create a post on our forums.

If you are still getting an error termination, please let me know here, and I will look into the issue further.

t-sanders commented 4 years ago

Thank for your reply Michael. As explained in my post, the problem occurs with every model, including the models from the repository and the tutorial model.

I can confirm that the $(FEBioStudioDir)/febio3 setting from the Run FEBio dialog is correct.

I created a new launch configuration, this had the same behaviour.

Thanks for your effort!

Cheers, Tom

Op 5 okt. 2020, om 22:33 heeft michaelrossherron notifications@github.com het volgende geschreven:

I am unable to reproduce this issue on Ubuntu 18.04. There could be a few things that are causing this issue on your end.

The problem could lie in the individual model files that you are trying to run. Please test a problem from the Test Suite. To do so, go to the Repository Panel in FEBio Studio and press the connect button to connect to the repository. Once connected, expand the Test Suite category, then expand the Contact project under that category. Double-click on the first file in that project (co01.feb) to download and open it. Once it's open, go to FEBio->Run FEBio... in the main menu and run the problem. This problem normal terminated almost instantly for me on Ubuntu 18.04.

If this still ends in an error termination for you then it's possible that your launch configuration is pointing to an old version of FEBio that possibly has some bugs. To ensure that you're using the version of FEBio that shipped with your current version of FEBio Studio, open the Run FEBio dialog, and next to the Launch Configuration drop-down menu, click the Edit button (the one with the clipboard). This will open the Launch Configuration dialog. Either edit the current launch configuration, or create a new one with the Launch Type set to Local, and the following text in the FEBio Executable box:

$(FEBioStudioDir)/febio3

Click OK, and confirm your changes. Back on the Run FEBio dialog, ensure that you have your newly-edited launch configuration selected and try running the problem again.

If this normal terminates for you, then the problem likely lies with the files that you were trying to run before. If that's the case, and you would like some help trying to debug those runs, please create a post on our forums https://forums.febio.org/.

If you are still getting an error termination, please let me know here, and I will look into the issue further.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/febiosoftware/FEBioStudio/issues/18#issuecomment-703872743, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA2L5IOJ56J6KYSMBLMRCH3SJIURHANCNFSM4SCVEFBQ.

michaelrossherron commented 4 years ago

I've just tried to reproduce this error on a virtual machine with a clean installation of Ubuntu 18.04 and I still can't reproduce it. I'm not sure what could be causing it.

Does FEBio require any special Ubuntu libraries or any minimum system hardware?

FEBio shouldn't require any extra libraries or minimum hardware. It could be that febio3 is using a system library in place of one that was shipped with it, which could potentially be causing some issues. Would you please send me the output of the following command?

ldd [Path to FEBioStudio Installation]/bin/febio3

where [Path to FEBioStudio Installation] is replaced with the actual path.

Can I run FEBio3 from the commandline with extra debugging output?

All information about the run is always output to the log file, including some information that isn't output to the terminal by default. Would you send me a copy of the log file that was generated when you ran co01.feb from the Contact project in the Test Suite? If you have any trouble locating it, you should be able to select the file in the Project Pree in the Repository panel in FEBio Studio, and then click the Open File Location button (the file cabinet icon at the top of the panel). That should open your file browser to the location of the job file and the log file should be there as well.

EDIT: The log file should be in a subfolder of that directory called Jobs.

Also, would you send me a copy of the febio.xml file located in that same bin folder in your FEBioStudio installation directory?

Thanks,

Michael Herron

t-sanders commented 4 years ago

michaelrossherron schreef op 2020-10-06 20:32:

I've just tried to reproduce this error on a virtual machine with a clean installation of Ubuntu 18.04 and I still can't reproduce it. I'm not sure what could be causing it.

Does FEBio require any special Ubuntu libraries or any minimum system hardware?

FEBio shouldn't require any extra libraries or minimum hardware. It could be that febio3 is using a system library in place of one that was shipped with it, which could potentially be causing some issues. Would you please send me the output of the following command?

ldd [Path to FEBioStudio Installation]/bin/febio3

where [Path to FEBioStudio Installation] is replaced with the actual path.

Can I run FEBio3 from the commandline with extra debugging output?

All information about the run is always output to the log file, including some information that isn't output to the terminal by default. Would you send me a copy of the log file that was generated when you ran co01.feb from the Contact project in the Test Suite? If you have any trouble locating it, you should be able to select the file in the Project Pree in the Repository panel in FEBio Studio, and then click the Open File Location button (the file cabinet icon at the top of the panel). That should open your file browser to the location of the job file and the log file should be there as well.

Also, would you send me a copy of the febio.xml file located in that same bin folder in your FEBioStudio installation directory?

Thanks,

Michael Herron

-- You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub [1], or unsubscribe [2].

Michael,

Attached are the requested files. The co01.feb seems to be empty, no model data shows up.

Cheers, Tom

Links:

[1] https://github.com/febiosoftware/FEBioStudio/issues/18#issuecomment-704468931 [2] https://github.com/notifications/unsubscribe-auth/AA2L5IMAKIK6Q22UH3GHVITSJNPC7ANCNFSM4SCVEFBQ

     ________    _________   _______       __     _________            
    |        |\ |        |\ |       \\    |  |\  /         \\          
    |    ____|| |    ____|| |    __  ||   |__|| |    ___    ||         
    |   |\___\| |   |\___\| |   |\_| ||    \_\| |   //  \   ||         
    |   ||__    |   ||__    |   ||_| ||   |  |\ |  ||    |  ||         
    |       |\  |       |\  |         \\  |  || |  ||    |  ||         
    |    ___||  |    ___||  |    ___   || |  || |  ||    |  ||         
    |   |\__\|  |   |\__\|  |   |\__|  || |  || |  ||    |  ||         
    |   ||      |   ||___   |   ||__|  || |  || |   \\__/   ||         
    |   ||      |        |\ |          || |  || |           ||         
    |___||      |________|| |_________//  |__||  \_________//          

  F I N I T E   E L E M E N T S   F O R   B I O M E C H A N I C S      

version 3.0.1 FEBio is a registered trademark.
copyright (c) 2006-2020 - All rights reserved

===========================================================================


t-sanders commented 4 years ago

michaelrossherron schreef op 2020-10-06 20:32:

I've just tried to reproduce this error on a virtual machine with a clean installation of Ubuntu 18.04 and I still can't reproduce it. I'm not sure what could be causing it.

Does FEBio require any special Ubuntu libraries or any minimum system hardware?

FEBio shouldn't require any extra libraries or minimum hardware. It could be that febio3 is using a system library in place of one that was shipped with it, which could potentially be causing some issues. Would you please send me the output of the following command?

ldd [Path to FEBioStudio Installation]/bin/febio3

where [Path to FEBioStudio Installation] is replaced with the actual path.

Can I run FEBio3 from the commandline with extra debugging output?

All information about the run is always output to the log file, including some information that isn't output to the terminal by default. Would you send me a copy of the log file that was generated when you ran co01.feb from the Contact project in the Test Suite? If you have any trouble locating it, you should be able to select the file in the Project Pree in the Repository panel in FEBio Studio, and then click the Open File Location button (the file cabinet icon at the top of the panel). That should open your file browser to the location of the job file and the log file should be there as well.

Also, would you send me a copy of the febio.xml file located in that same bin folder in your FEBioStudio installation directory?

Thanks,

Michael Herron

-- You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub [1], or unsubscribe [2].

Some additional info: all .feb files look empty, .fsm and .fsprj open correct. All of them produce the same error on "Run FEBio". On Windows everything works fine.

Cheers, Tom

Links:

[1] https://github.com/febiosoftware/FEBioStudio/issues/18#issuecomment-704468931 [2] https://github.com/notifications/unsubscribe-auth/AA2L5IMAKIK6Q22UH3GHVITSJNPC7ANCNFSM4SCVEFBQ

michaelrossherron commented 4 years ago

It seems like the files that you meant to attach didn't actually get attached.

It is odd to me that the the .feb files are empty; we've never encountered that before. Just to be clear, by empty do you mean a file with no text at all, with a size of 0 bytes?

When you download a file from the test suite, the file that is downloaded is a .feb file. That file then gets imported into FEBio Studio and converted into a .fsm format (though this .fsm file doesn't get saved unless you save it manually). Then when you run a file in FEBio from within FEBio Studio, FEBio Studio exports the open model to a .feb file that's saved in the jobs subdirectory, and then attempts to run that .feb file.

So if you look in the directory where the files for the Contact project are being downloaded, you should see a file called co01.feb, and then there should be another file with that same name in the jobs subdirectory that was created when you ran the model. Are both of these .feb files empty, or is it just the one in the jobs subdirectory? If only the one in the jobs subdirectory is empty, then it looks like the issue is actually that FEBio Studio is not properly exporting .feb files. If the co01.feb file that is not in the jobs subdirectory is not empty would you please open a terminal in that directory and then run

febio3 co01.feb

and see if that works?

Thanks,

Michael Herron

t-sanders commented 4 years ago

michaelrossherron schreef op 2020-10-06 22:39:

It seems like the files that you meant to attach didn't actually get attached.

It is odd to me that the the .feb files are empty; we've never encountered that before. Just to be clear, by empty do you mean a file with no text at all, with a size of 0 bytes?

When you download a file from the test suite, the file that is downloaded is a .feb file. That file then gets imported into FEBio Studio and converted into a .fsm format (though this .fsm file doesn't get saved unless you save it manually). Then when you run a file in FEBio from within FEBio Studio, FEBio Studio exports the open model to a .feb file that's saved in the jobs subdirectory, and then attempts to run that .feb file.

So if you look in the directory where the files for the Contact project are being downloaded, you should see a file called co01.feb, and then there should be another file with that same name in the jobs subdirectory that was created when you ran the model. Are both of these .feb files empty, or is it just the one in the jobs subdirectory? If only the one in the jobs subdirectory is empty, then it looks like the issue is actually that FEBio Studio is not properly exporting .feb files. If the co01.feb file that is not in the jobs subdirectory is not empty would you please open a terminal in that directory and then run

febio3 co01.feb

and see if that works?

Thanks,

Michael Herron

-- You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub [1], or unsubscribe [2].

Running 'febio2 co01.feb' in the terminal works fine! So the problem appears to be in FEBioStudio, not in FEBio.

Sorry the attachments did not get through. These are the contents:

Results of ldd:

linux-vdso.so.1 (0x00007ffce3ff3000) libHYPRE.so.0 => /opt/FEBioStudio/bin/../lib/libHYPRE.so.0 (0x00007fdbe64a8000) libiomp5.so => /opt/FEBioStudio/bin/../lib/libiomp5.so (0x00007fdbe6104000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdbe5ee7000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdbe5ce3000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdbe5945000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdbe572d000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdbe550e000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdbe511d000) /lib64/ld-linux-x86-64.so.2 (0x00007fdbe6a09000)

logfile for co01.feb:



febio.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

Cheers,

Tom

Links:

[1] https://github.com/febiosoftware/FEBioStudio/issues/18#issuecomment-704539645 [2] https://github.com/notifications/unsubscribe-auth/AA2L5IIQEMUGDIIOZASWCMDSJN57DANCNFSM4SCVEFBQ

michaelrossherron commented 4 years ago

I'd like to take a look at the feb files that your version of FEBio Studio is producing. It looks like you're replying to this thread via email, which works if you're just trying to reply with text, but doesn't allow you to send me files. Please follow this hyperlink, and reply to the conversation on that page. Replying here in github should allow you to drag and drop files to attach them.

Please send me a copy of the co01.feb file that you downloaded from the repository, an also a copy of the co01.feb file that was created in the jobs subdirectory. Rename the second file to co01job.feb so that I can tell the two of them apart.

Thanks,

Michael Herron

t-sanders commented 4 years ago

These are the two files. If I run the file from the repo in the terminal everything is fine, if I run the file from the job folder, I get the error.

co01.zip

t-sanders commented 4 years ago

Any progress on this?

michaelrossherron commented 4 years ago

Apologies, I was working on two issues at the same time and I thought that I had responded to both of them, but it looks like I forgot to respond this one.

This is a very odd issue, and I have some good news and some bad news.

The good news is that we now know what's going on. When your copy of FEBio Studio is exporting .feb files, it's changing the values of various things in the .feb file, seemingly at random. For whatever reason, in that file that you sent, it had changed the y and z components of all of the nodes' positions to 0.0. This explains why the files appeared to be empty when you opened them in FEBio Studio, because all of the nodes had the same y and z positions, and so all of the elements were infinitely thin, and so you couldn't see any of them. There were other values, such as some load curve values, and material properties that were being randomly changed as well.

The bad news is that neither our lead developer nor I have been able to reproduce this bug, or find any place in the code that would suggest how this is even possible; we're quite frankly baffled. I'm running the same version of the software on the same OS as you, and I can't get this to happen.

We will continue to be on the lookout for problems like this and hopefully we'll be able to find a solution for you, but for now, there are only a couple of things that I can suggest for you. First, keep updating to the newest version of the software whenever you can. Even if we never positively identify the cause of this bug, we may end up fixing it while patching something seemingly unrelated. FEBio Studio 1.0.3 is currently out, and I don't think that it was when you first started having these issues. FEBio Studio 1.1.0 should be releasing within the next few weeks.

Another suggestion that I have is that you attempt to compile the code yourself to see if the issue persists. I'm currently finalizing a CMake script to help with compilation, and I've just started work on a build guide. If you'd like to try to compile FEBio Studio, I'd wait a couple of days for me to get the build guide up, and then try it.

The last suggestion isn't great, but when I installed a fresh copy of Ubuntu 18.04 on a virtual machine, FEBio Studio worked on it without any problems. There could be some sort of OS setting, or perhaps a third-party library or software that you've installed that is interfering with FEBio Studio in some way. You could try a fresh installation of Ubuntu, though I very much understand that this is not an ideal fix.

Let me know if you have any other questions,

Michael Herron

t-sanders commented 4 years ago

Thanks for your extensive comment! I have also looked at the differences between the two .feb files. It looks like the floating point values are all converted to integer. Also negative numbers are ingored and scientific notation is converted incorrectly.
Is FEBio using the GPU? I'm using CUDA 11 on GTX1060.

t-sanders commented 3 years ago

Just installed version 1.1.0. The problem is still there...

michaelrossherron commented 3 years ago

I am still unable to reproduce this bug, and we're still not sure what could be causing it. If you are at all comfortable with compiling code, I'd like to see if you can use our new CMake script to compile FEBio Studio yourself to see if this problem persists in the version that you compile. The build guide on GitHub is not fully complete, but it should give you enough information to get started. The CMake script for FEBio Studio works well, and should help to make compiling FEBio Studio fairly easy. If you would like to give this a shot, I wouldn't worry about any of the optional dependencies, and so all you'd really need to install would be CMake and Qt (I'd recommend Qt 5.14.1).

I really wish that I had a better solution for you, but we can't replicate the issue, and no other users have come forward with a similar problem. Without being able to replicate it, we just can't track down what's happening.

Also, apologies for missing your earlier comment. FEBio does not use the GPU at all; FEBio Studio does when it uses OpenGL to render the models, but that couldn't be related to the issue that you're experiencing.

You could also create a virtual machine running Ubuntu 18.04 to see if you experience the same problem there. They're fairly easy and quick to set up. If you install the software on the virtual machine and it behaves like it should, then you'd be sure that the problem had something to do with the way that your system is set up.

Let me know if you have any further questions,

Michael Herron

t-sanders commented 3 years ago

Michael, Today I created a Ubuntu 18.04 virtualbox server on Ubuntu 18.04 and installed version 1.1.0. I did the same on Windows 10. Both virtual servers showed the problem. So I cannot reproduce a correct working FEBio Studio on Ubuntu as you mentioned.

I will try to compile version 1.1.0 from source and let you know what happens.

Cheers, Tom

michaelrossherron commented 3 years ago

Tom,

I just created a new Ubuntu 18.04 VM and installed FEBio Studio on it. The software works perfectly for me on that virtual machine, and I cannot reproduce this bug.

There must be some miscommunication in regards to what is happening here. If you'd like, you can send me an email at michaelrossherron@gmail.com, and I can set up a Zoom meeting with you. You can show me what exactly is happening, which should help, since I'm unable to reproduce the bug.

Thanks, Michael Herron

t-sanders commented 3 years ago

Michael, Thanks for your help! If I cannot solve the problem with installing from source, a Zoom session could really help. For now I run into the following problem after 92% of the compilation:

[ 92%] Building CXX object CMakeFiles/FEBioStudio.dir/FEBioStudio/PlaneCutTool.cpp.o [ 92%] Building CXX object CMakeFiles/FEBioStudio.dir/FEBioStudio/PlaneTool.cpp.o [ 92%] Building CXX object CMakeFiles/FEBioStudio.dir/FEBioStudio/PlotWidget.cpp.o /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp: In member function ‘void CPlotWidget::drawGrid(QPainter&)’: /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp:1328:18: error: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined QPainterPath path; ^~~~ /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp:1346:18: error: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined QPainterPath path; ^~~~ /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp: In member function ‘void CPlotWidget::drawAxes(QPainter&)’: /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp:1370:17: error: aggregate ‘QPainterPath xaxis’ has incomplete type and cannot be defined QPainterPath xaxis; ^~~~~ /home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp:1383:17: error: aggregate ‘QPainterPath yaxis’ has incomplete type and cannot be defined QPainterPath yaxis; ^~~~~ CMakeFiles/FEBioStudio.dir/build.make:3302: recipe for target 'CMakeFiles/FEBioStudio.dir/FEBioStudio/PlotWidget.cpp.o' failed make[2]: [CMakeFiles/FEBioStudio.dir/FEBioStudio/PlotWidget.cpp.o] Error 1 CMakeFiles/Makefile2:495: recipe for target 'CMakeFiles/FEBioStudio.dir/all' failed make[1]: [CMakeFiles/FEBioStudio.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2 tom@tom-VirtualBox:~/FEBioStudio-master/build$

Your comment is appreciated!

t-sanders commented 3 years ago

Forgot to mention: QT 5.15.0 is installed.

michaelrossherron commented 3 years ago

That's odd. There may be a difference in how the include files are set up on Qt 5.15.0 (we're currently using 5.14.2). Open the file in question (/home/tom/FEBioStudio-master/FEBioStudio/PlotWidget.cpp) and somewhere at the top of the file where all of the include statements are, add the following include statement on a new line:

#include <QPainterPath>

Then give it another try and let me know how it goes.

Thanks,

Michael Herron

t-sanders commented 3 years ago

Adding the #include solved the PlotWidget.cpp compile, but more errors occurred. These were due to the fact that Qt 5.15 ' moc' is not compatible with 5.14. (not sure what that means) After downgrading to 5.14.2 (and a 'make clean') I ran into the following:

[ 67%] Building CXX object CMakeFiles/FSCore.dir/FSCore/memtool.cpp.o [ 67%] Building CXX object CMakeFiles/FSCore.dir/FSCore/stdafx.cpp.o [ 67%] Building CXX object CMakeFiles/FSCore.dir/CMakeFiles/AutoGen/FSCore_autogen/mocs_compilation.cpp.o [ 68%] Linking CXX static library lib/libFSCore.a [ 68%] Built target FSCore [ 68%] Automatic MOC and RCC for target GLWLib [ 68%] Built target GLWLib_autogen Scanning dependencies of target GLWLib [ 68%] Building CXX object CMakeFiles/GLWLib.dir/GLWLib/GLWidget.cpp.o /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp: In member function ‘void GLLegendBar::draw_gradient_vert(QPainter)’: /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:363:15: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int l = fm.horizontalAdvance(QString("x10")); ^~~~~ /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:387:16: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int w = fm.horizontalAdvance(s); ^~~~~ /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp: In member function ‘void GLLegendBar::draw_gradient_horz(QPainter)’: /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:496:15: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int l = fm.horizontalAdvance(QString("x10")); ^~~~~ /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:520:16: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int w = fm.horizontalAdvance(s); ^~~~~ /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:527:16: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int w = fm.horizontalAdvance(s); ^~~~~ /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp: In member function ‘void GLLegendBar::draw_discrete_horz(QPainter*)’: /home/tom/FEBioStudio-master/GLWLib/GLWidget.cpp:715:17: error: ‘class QFontMetrics’ has no member named ‘horizontalAdvance’ int fw = fm.horizontalAdvance(str); ^~~~~ CMakeFiles/GLWLib.dir/build.make:62: recipe for target 'CMakeFiles/GLWLib.dir/GLWLib/GLWidget.cpp.o' failed make[2]: [CMakeFiles/GLWLib.dir/GLWLib/GLWidget.cpp.o] Error 1 CMakeFiles/Makefile2:828: recipe for target 'CMakeFiles/GLWLib.dir/all' failed make[1]: [CMakeFiles/GLWLib.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

Thanks, Tom

t-sanders commented 3 years ago

Turned out that I had to install some opengl an glu devs. Compiling is ok now, but linking fails:

[100%] Linking CXX executable bin/FEBioStudio CMakeFiles/FEBioStudio.dir/CMakeFiles/AutoGen/FEBioStudio_autogen/mocs_compilation.cpp.o:(.data.rel.ro._ZTV9ZipThread[_ZTV9ZipThread]+0x70): undefined reference to ZipThread::run()' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::paintGL()': GLView.cpp:(.text+0x69ee): undefined reference to gluOrtho2D' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::Render3DCursor(vec3d const&, double)': GLView.cpp:(.text+0x7ef3): undefined reference to gluOrtho2D' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::SetupProjection()': GLView.cpp:(.text+0x88e1): undefined reference to gluPerspective' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::RenderBackground()': GLView.cpp:(.text+0xb0cf): undefined reference to gluOrtho2D' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::RenderRubberBand()': GLView.cpp:(.text+0xcf84): undefined reference to gluOrtho2D' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::RenderRigidWalls()': GLView.cpp:(.text+0xd7f8): undefined reference to gluNewQuadric' GLView.cpp:(.text+0xd87c): undefined reference togluSphere' GLView.cpp:(.text+0xd890): undefined reference to gluDeleteQuadric' CMakeFiles/FEBioStudio.dir/FEBioStudio/GLView.cpp.o: In functionCGLView::RenderTags()': GLView.cpp:(.text+0x2811f): undefined reference to gluOrtho2D' CMakeFiles/FEBioStudio.dir/FEBioStudio/GManipulator.cpp.o: In functionGTranslator::Render(int, bool)': GManipulator.cpp:(.text+0x104): undefined reference to gluNewQuadric' GManipulator.cpp:(.text+0x219): undefined reference togluCylinder' GManipulator.cpp:(.text+0x30e): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x3da): undefined reference togluCylinder' GManipulator.cpp:(.text+0x6aa): undefined reference to gluDeleteQuadric' CMakeFiles/FEBioStudio.dir/FEBioStudio/GManipulator.cpp.o: In functionGRotator::Render(int, bool)': GManipulator.cpp:(.text+0x1056): undefined reference to gluNewQuadric' GManipulator.cpp:(.text+0x10cc): undefined reference togluDisk' GManipulator.cpp:(.text+0x1181): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x1252): undefined reference togluDisk' GManipulator.cpp:(.text+0x1307): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x13bb): undefined reference togluDisk' GManipulator.cpp:(.text+0x1470): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x14db): undefined reference togluDeleteQuadric' CMakeFiles/FEBioStudio.dir/FEBioStudio/GManipulator.cpp.o: In function GScalor::Render(int, bool)': GManipulator.cpp:(.text+0x1fbe): undefined reference togluNewQuadric' GManipulator.cpp:(.text+0x20e8): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x2117): undefined reference togluDisk' GManipulator.cpp:(.text+0x2221): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x2250): undefined reference togluDisk' GManipulator.cpp:(.text+0x2331): undefined reference to gluCylinder' GManipulator.cpp:(.text+0x2360): undefined reference togluDisk' GManipulator.cpp:(.text+0x2630): undefined reference to gluDeleteQuadric' CMakeFiles/FEBioStudio.dir/FEBioStudio/GTriad.cpp.o: In functionGTriad::Render()': GTriad.cpp:(.text+0x22b): undefined reference to gluNewQuadric' GTriad.cpp:(.text+0x2cf): undefined reference togluCylinder' GTriad.cpp:(.text+0x323): undefined reference to gluCylinder' GTriad.cpp:(.text+0x3a5): undefined reference togluCylinder' GTriad.cpp:(.text+0x3f9): undefined reference to gluCylinder' GTriad.cpp:(.text+0x45e): undefined reference togluCylinder' CMakeFiles/FEBioStudio.dir/FEBioStudio/GTriad.cpp.o:GTriad.cpp:(.text+0x4b2): more undefined references to gluCylinder' follow CMakeFiles/FEBioStudio.dir/FEBioStudio/GTriad.cpp.o: In functionGTriad::Render()': GTriad.cpp:(.text+0x59f): undefined reference to gluDeleteQuadric' lib/libGLLib.a(GDecoration.cpp.o): In functionGSphereDecoration::render()': GDecoration.cpp:(.text+0x983): undefined reference to gluNewQuadric' GDecoration.cpp:(.text+0xa0d): undefined reference togluSphere' GDecoration.cpp:(.text+0xa6f): undefined reference to gluDeleteQuadric' lib/libGLWLib.a(GLWidget.cpp.o): In functionGLTriad::draw(QPainter)': GLWidget.cpp:(.text+0x380a): undefined reference to gluOrtho2D' GLWidget.cpp:(.text+0x3867): undefined reference togluOrtho2D' GLWidget.cpp:(.text+0x3a70): undefined reference to gluNewQuadric' GLWidget.cpp:(.text+0x3b14): undefined reference togluCylinder' GLWidget.cpp:(.text+0x3b68): undefined reference to gluCylinder' GLWidget.cpp:(.text+0x3bea): undefined reference togluCylinder' GLWidget.cpp:(.text+0x3c3e): undefined reference to gluCylinder' GLWidget.cpp:(.text+0x3ca3): undefined reference togluCylinder' lib/libGLWLib.a(GLWidget.cpp.o):GLWidget.cpp:(.text+0x3cf7): more undefined references to gluCylinder' follow lib/libGLWLib.a(GLWidget.cpp.o): In functionGLTriad::draw(QPainter)': GLWidget.cpp:(.text+0x3d0b): undefined reference to gluDeleteQuadric' lib/libPostGL.a(GLTensorPlot.cpp.o): In functionPost::GLTensorPlot::Render(CGLContext&)': GLTensorPlot.cpp:(.text+0x1d65): undefined reference to gluNewQuadric' GLTensorPlot.cpp:(.text+0x1d80): undefined reference togluQuadricNormals' GLTensorPlot.cpp:(.text+0x2c35): undefined reference to gluDeleteQuadric' lib/libPostGL.a(GLTensorPlot.cpp.o): In functionPost::GLTensorPlot::RenderArrows(Post::GLTensorPlot::TENSOR&, float, GLUquadric)': GLTensorPlot.cpp:(.text+0x30af): undefined reference to gluCylinder' GLTensorPlot.cpp:(.text+0x3104): undefined reference togluCylinder' lib/libPostGL.a(GLTensorPlot.cpp.o): In function `Post::GLTensorPlot::RenderSphere(Post::GLTensorPlot::TENSOR&, float, GLUquadric)': GLTensorPlot.cpp:(.text+0x3834): undefined reference to gluSphere' lib/libPostGL.a(GLVectorPlot.cpp.o): In functionPost::CGLVectorPlot::Render(CGLContext&)': GLVectorPlot.cpp:(.text+0xcdc): undefined reference to gluNewQuadric' GLVectorPlot.cpp:(.text+0xcf7): undefined reference togluQuadricNormals' GLVectorPlot.cpp:(.text+0x15c8): undefined reference to gluDeleteQuadric' lib/libPostGL.a(GLVectorPlot.cpp.o): In functionPost::CGLVectorPlot::RenderVector(vec3f const&, vec3f, GLUquadric*)': GLVectorPlot.cpp:(.text+0x1b25): undefined reference to gluCylinder' GLVectorPlot.cpp:(.text+0x1b7a): undefined reference togluCylinder' GLVectorPlot.cpp:(.text+0x1bb0): undefined reference to gluCylinder' GLVectorPlot.cpp:(.text+0x1be6): undefined reference togluCylinder' GLVectorPlot.cpp:(.text+0x1c0c): undefined reference to `gluSphere' collect2: error: ld returned 1 exit status CMakeFiles/FEBioStudio.dir/build.make:3090: recipe for target 'bin/FEBioStudio' failed make[2]: [bin/FEBioStudio] Error 1 CMakeFiles/Makefile2:476: recipe for target 'CMakeFiles/FEBioStudio.dir/all' failed make[1]: [CMakeFiles/FEBioStudio.dir/all] Error 2 Makefile:102: recipe for target 'all' failed make: *** [all] Error 2

michaelrossherron commented 3 years ago

The first linker error has to do with a missing function definition in FEBioStudio/ZipFiles.cpp. This only occurs if you're not building with QuaZip, so it slipped by us for a while. I fixed the issue in our development branch, but apparently that fix didn't make it into the latest release version. Go ahead an open up that file, and at the very bottom of the file, you should see a #endif statement. Right above that, on its own line, put the following:

void ZipThread::run() {}

That should fix that issue.

The rest of those errors have to do with not linking properly to GLU, but I'm not sure why that would be. If you didn't rerun the CMake script after installing those new OpenGL/GLU packages, then it might not have found those new packages. Just to be safe, open the CMakeLists.txt file, and change line 326 from

target_link_libraries(FEBioStudio ${OPENGL_LIBRARY})

to

target_link_libraries(FEBioStudio ${OPENGL_LIBRARIES})

then rerun make (a change to the CMakeLists file should automatically rerun CMake when you run make again). I think that that will fix those errors.

Let me know if there are any other problems,

Michael Herron

t-sanders commented 3 years ago

Thanks for your reply Michael, the compilation works fine now! However, it looks like there is no "install" target in the makefile.
The "cmake_install.cmake" file is generated, but executing it manually (using "cmake -P cmake_install.cmake") only displays -- Install configuration: "Release", it does not install anything.

As always: your comment is appreciated. Tom

michaelrossherron commented 3 years ago

There isn't currently an install target in the CMake script, though it's something that I plan on adding later. I did my best to ensure that the CMake build directory stayed as clean as possible during the build, however. So if you just build the default target, you should see a bin subdirectory in your build directory, and the FEBioStudio binary should be in there. I haven't had any dependency issues on any of my test systems when I just run the binary out of there. Give that a shot, and test to see if this issue is still present in your build.

Thanks,

Michael Herron

t-sanders commented 3 years ago

You are right, code works OK this way. Unfortunately the original problem still exists :-( SInce I have the build proces OK now, I can do some debugging. I'll keep you updated. Thanks.

t-sanders commented 3 years ago

OMG! - your software does not work on non-english localized systems. If I switch to English everything works fine... :-((((

t-sanders commented 3 years ago

Obviously some localization/encoding problem in the xml export. Separator . is changed to , in the .feb file on my Dutch system. This makes it impossible for FeBio to read it correct.

michaelrossherron commented 3 years ago

This is extremely good news! We now know what's going on. We've apparently never had someone try the software in another language before (or at the very leas not in Dutch). It may take us a bit to track down where things in the code are going wrong, but we'll try to get this bug sorted out as fast as we can, and I will let you know when we have a version of the software that's working for you.

Michael Herron

michaelrossherron commented 3 years ago

This bug has been tracked down and fixed, and I've been able to confirm that the fix works for me. Unfortunately, this fix just barely missed making it into our 1.2 release, and so it won't go live until our next release.

That being said, I created an installer for you with the latest version of our development build that has the fix in it. You can download the installer from ftp://ftp.sci.utah.edu/download/mherron/FEBioStudio-1.2.0-linux-x64-installer.run. Please give it a try and let me know if it fixes your problem.

Thanks,

Michael Herron

t-sanders commented 3 years ago

FIXED! FEBioStudio works fine now. Great job, thanks a lot Michael!

Cheers, Tom