Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Why strip is not identify header file format on Ubuntu?



  • Hi,

    I am using Ubuntu 18.04.3 and Qt 5.13.1. I am trying to generate library file for qwt plot library.

    My qwt library Location: /usr/local/qwt-6.1
    I export qt installation path: export PATH=/opt/Qt/5.13.1/gcc_64/bin/:$PATH

    I follow below steps to generate library files:

    1) cd /usr/local/qwt-6.1
    2) qmake qwt.pro
    3) make
    4) sudo make install  <--- Header file format is not identify 
    

    strip is not identify header file format.

    Here sudo make install output:

    cd src/ && ( test -e Makefile || /opt/Qt/5.13.1/gcc_64/bin/qmake -o Makefile /usr/local/qwt-6.1/src/src.pro ) && make -f Makefile install
    make[1]: Entering directory '/usr/local/qwt-6.1/src'
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe ../lib/libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1.5
    strip --strip-unneeded /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1.5
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /usr/local/qwt-6.1/src/qwt.h /usr/local/qwt-6.1.5-svn/include/qwt.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /usr/local/qwt-6.1/src/qwt_abstract_scale_draw.h /usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    
    

    May I get any suggestion, what should I need to do?


  • Lifetime Qt Champion

    @Yash001 and do yourself a favor and build programs as normal user, not as root.

    you can compile everything in your home and just exec sudo make install afterwards.

    Regards


  • Moderators

    You are building in the same folder make is then installing into. That is very likely to cause trouble.

    • remove directory /usr/local/qwt-6.1 completely
    • unpack/ checkout qwt to some local directory, like ~/qwt/6.1-src
    • then proceed with your qmake, make and sudo make install steps as before


  • @sierdzio Thank you sir for response.

    I completely remove library from /usr/local/qwt-6.1,and I place my library at ~/Documents/qwt/qwt-6.1. But I got same issue. Any other suggestion?


  • Lifetime Qt Champion

    @Yash001 said in Why strip is not identify header file format on Ubuntu?:

    Any other suggestion?

    What install location did you specify? Please show your errors.



  • @Christian-Ehrlicher said in Why strip is not identify header file format on Ubuntu?:

    Please show your errors.

    ~/Documents/qwt/qwt-6.1$ sudo make install
    [sudo] password for *******: 
    cd src/ && ( test -e Makefile || /opt/Qt/5.13.1/gcc_64/bin/qmake -o Makefile /home/admiral/Documents/qwt/qwt-6.1/src/src.pro ) && make -f Makefile install
    make[1]: Entering directory '/home/admiral/Documents/qwt/qwt-6.1/src'
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe ../lib/libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1.5
    strip --strip-unneeded /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1.5
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6
    ln -f -s libqwt.so.6.1.5 /usr/local/qwt-6.1.5-svn/lib/libqwt.so.6.1
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt.h /usr/local/qwt-6.1.5-svn/include/qwt.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_abstract_scale_draw.h /usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_abstract_scale_draw.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_clipper.h /usr/local/qwt-6.1.5-svn/include/qwt_clipper.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_clipper.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_clipper.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_color_map.h /usr/local/qwt-6.1.5-svn/include/qwt_color_map.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_color_map.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_color_map.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_compat.h /usr/local/qwt-6.1.5-svn/include/qwt_compat.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_compat.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_compat.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    

    Last part of output.

    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_thermo.h /usr/local/qwt-6.1.5-svn/include/qwt_thermo.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_thermo.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_thermo.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/src/qwt_wheel.h /usr/local/qwt-6.1.5-svn/include/qwt_wheel.h
    strip /usr/local/qwt-6.1.5-svn/include/qwt_wheel.h
    strip:/usr/local/qwt-6.1.5-svn/include/qwt_wheel.h: File format not recognized
    Makefile:14298: recipe for target 'install_headers' failed
    make[1]: [install_headers] Error 1 (ignored)
    make[1]: Leaving directory '/home/admiral/Documents/qwt/qwt-6.1/src'
    cd textengines/ && ( test -e Makefile || /opt/Qt/5.13.1/gcc_64/bin/qmake -o Makefile /home/admiral/Documents/qwt/qwt-6.1/textengines/textengines.pro ) && make -f Makefile install
    make[1]: Entering directory '/home/admiral/Documents/qwt/qwt-6.1/textengines'
    make[1]: Nothing to be done for 'install'.
    make[1]: Leaving directory '/home/admiral/Documents/qwt/qwt-6.1/textengines'
    cd doc/ && ( test -e Makefile || /opt/Qt/5.13.1/gcc_64/bin/qmake -o Makefile /home/admiral/Documents/qwt/qwt-6.1/doc/doc.pro ) && make -f Makefile install
    make[1]: Entering directory '/home/admiral/Documents/qwt/qwt-6.1/doc'
    make[1]: Nothing to be done for 'install'.
    make[1]: Leaving directory '/home/admiral/Documents/qwt/qwt-6.1/doc'
    cd designer/ && ( test -e Makefile || /opt/Qt/5.13.1/gcc_64/bin/qmake -o Makefile /home/admiral/Documents/qwt/qwt-6.1/designer/designer.pro ) && make -f Makefile install
    make[1]: Entering directory '/home/admiral/Documents/qwt/qwt-6.1/designer'
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe plugins/designer/libqwt_designer_plugin.so /usr/local/qwt-6.1.5-svn/plugins/designer/libqwt_designer_plugin.so
    strip --strip-unneeded /usr/local/qwt-6.1.5-svn/plugins/designer/libqwt_designer_plugin.so
    make[1]: Leaving directory '/home/admiral/Documents/qwt/qwt-6.1/designer'
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/qwtconfig.pri /usr/local/qwt-6.1.5-svn/features/qwtconfig.pri
    strip /usr/local/qwt-6.1.5-svn/features/qwtconfig.pri
    strip:/usr/local/qwt-6.1.5-svn/features/qwtconfig.pri: File format not recognized
    Makefile:637: recipe for target 'install_qwtspec' failed
    make: [install_qwtspec] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/qwtfunctions.pri /usr/local/qwt-6.1.5-svn/features/qwtfunctions.pri
    strip /usr/local/qwt-6.1.5-svn/features/qwtfunctions.pri
    strip:/usr/local/qwt-6.1.5-svn/features/qwtfunctions.pri: File format not recognized
    Makefile:637: recipe for target 'install_qwtspec' failed
    make: [install_qwtspec] Error 1 (ignored)
    /opt/Qt/5.13.1/gcc_64/bin/qmake -install qinstall -exe /home/admiral/Documents/qwt/qwt-6.1/qwt.prf /usr/local/qwt-6.1.5-svn/features/qwt.prf
    strip /usr/local/qwt-6.1.5-svn/features/qwt.prf
    strip:/usr/local/qwt-6.1.5-svn/features/qwt.prf: File format not recognized
    Makefile:637: recipe for target 'install_qwtspec' failed
    make: [install_qwtspec] Error 1 (ignored)
    
    

    @Christian-Ehrlicher said in Why strip is not identify header file format on Ubuntu?:

    What install location did you specify?
    My qmake location: /opt/Qt/5.13.1/gcc_64/bin/
    qwt Package location: ~/Documents/qwt/qwt-6.1


  • Lifetime Qt Champion

    I've no idea where the strip command is coming from - tested it with 6.1.5 locally and all works fine. Did you modify the qwt config files somehow?


  • Lifetime Qt Champion

    Ah, can it be that your header files are marked as executable because you copied the files over from windows?



  • @Yash001
    I don't know anything about making Qt, but the Unix strip command is for running on executables, to remove bytes you don't need on final release code. It would never be run on a .h source file. Nor on a .pri or .prf file. So something is wrong.



  • @Christian-Ehrlicher

    I download from sudo svn checkout svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1.

    However, Yes it is marked as executable. Here the output of ls -al command.

    /usr/local/qwt-6.1.5-svn/include$ ls -al
    total 540
    drwxr-xr-x 2 root root  4096 Sep 29 11:54 .
    drwxr-xr-x 6 root root  4096 Sep 29 00:33 ..
    -rwxr-xr-x 1 root root  2030 Sep 29 00:22 qwt_abstract_legend.h
    -rwxr-xr-x 1 root root  3606 Sep 29 00:22 qwt_abstract_scale_draw.h
    -rwxr-xr-x 1 root root  2904 Sep 29 00:22 qwt_abstract_scale.h
    -rwxr-xr-x 1 root root  4398 Sep 29 00:22 qwt_abstract_slider.h
    -rwxr-xr-x 1 root root  2168 Sep 29 00:22 qwt_analog_clock.h
    -rwxr-xr-x 1 root root  1424 Sep 29 00:22 qwt_arrow_button.h
    -rwxr-xr-x 1 root root  1062 Sep 29 00:22 qwt_clipper.h
    -rwxr-xr-x 1 root root  5109 Sep 29 00:22 qwt_color_map.h
    -rwxr-xr-x 1 root root  3818 Sep 29 00:22 qwt_column_symbol.h
    -rwxr-xr-x 1 root root  2071 Sep 29 00:22 qwt_compass.h
    -rwxr-xr-x 1 root root  2196 Sep 29 00:22 qwt_compass_rose.h
    -rwxr-xr-x 1 root root  1064 Sep 29 00:22 qwt_compat.h
    -rwxr-xr-x 1 root root  4325 Sep 29 00:22 qwt_counter.h
    -rwxr-xr-x 1 root root  3763 Sep 29 00:22 qwt_curve_fitter.h
    -rwxr-xr-x 1 root root  3522 Sep 29 00:22 qwt_date.h
    -rwxr-xr-x 1 root root  2207 Sep 29 00:22 qwt_date_scale_draw.h
    -rwxr-xr-x 1 root root  2662 Sep 29 00:22 qwt_date_scale_engine.h
    -rwxr-xr-x 1 root root  4958 Sep 29 00:22 qwt_dial.h
    -rwxr-xr-x 1 root root  4081 Sep 29 00:22 qwt_dial_needle.h
    -rwxr-xr-x 1 root root  2363 Sep 29 00:22 qwt_dyngrid_layout.h
    -rwxr-xr-x 1 root root  5950 Sep 29 00:22 qwt_event_pattern.h
    -rwxr-xr-x 1 root root  1077 Sep 29 00:22 qwt_global.h
    -rwxr-xr-x 1 root root  5706 Sep 29 00:22 qwt_graphic.h
    -rwxr-xr-x 1 root root   510 Sep 29 00:22 qwt.h
    -rwxr-xr-x 1 root root  7166 Sep 29 00:22 qwt_interval.h
    -rwxr-xr-x 1 root root  2250 Sep 29 00:22 qwt_interval_symbol.h
    -rwxr-xr-x 1 root root  4747 Sep 29 00:22 qwt_knob.h
    -rwxr-xr-x 1 root root  2187 Sep 29 00:22 qwt_legend_data.h
    -rwxr-xr-x 1 root root  3439 Sep 29 00:22 qwt_legend.h
    -rwxr-xr-x 1 root root  1967 Sep 29 00:22 qwt_legend_label.h
    -rwxr-xr-x 1 root root  2426 Sep 29 00:22 qwt_magnifier.h
    -rwxr-xr-x 1 root root  3372 Sep 29 00:22 qwt_math.h
    -rwxr-xr-x 1 root root  2009 Sep 29 00:22 qwt_matrix_raster_data.h
    -rwxr-xr-x 1 root root  3411 Sep 29 00:22 qwt_null_paintdevice.h
    -rwxr-xr-x 1 root root  3802 Sep 29 00:22 qwt_painter_command.h
    -rwxr-xr-x 1 root root  6127 Sep 29 00:22 qwt_painter.h
    -rwxr-xr-x 1 root root  2938 Sep 29 00:22 qwt_panner.h
    -rwxr-xr-x 1 root root  9533 Sep 29 00:22 qwt_picker.h
    -rwxr-xr-x 1 root root  5686 Sep 29 00:22 qwt_picker_machine.h
    -rwxr-xr-x 1 root root  2329 Sep 29 00:22 qwt_pixel_matrix.h
    -rwxr-xr-x 1 root root  2635 Sep 29 00:22 qwt_plot_abstract_barchart.h
    -rwxr-xr-x 1 root root  3544 Sep 29 00:22 qwt_plot_barchart.h
    -rwxr-xr-x 1 root root  4961 Sep 29 00:22 qwt_plot_canvas.h
    -rwxr-xr-x 1 root root 10296 Sep 29 00:22 qwt_plot_curve.h
    -rwxr-xr-x 1 root root  1656 Sep 29 00:22 qwt_plot_dict.h
    -rwxr-xr-x 1 root root  3156 Sep 29 00:22 qwt_plot_directpainter.h
    -rwxr-xr-x 1 root root  3633 Sep 29 00:22 qwt_plot_glcanvas.h
    -rwxr-xr-x 1 root root  2413 Sep 29 00:22 qwt_plot_grid.h
    -rwxr-xr-x 1 root root  8468 Sep 29 00:22 qwt_plot.h
    -rwxr-xr-x 1 root root  4278 Sep 29 00:22 qwt_plot_histogram.h
    -rwxr-xr-x 1 root root  3994 Sep 29 00:22 qwt_plot_intervalcurve.h
    -rwxr-xr-x 1 root root  8333 Sep 29 00:22 qwt_plot_item.h
    -rwxr-xr-x 1 root root  3225 Sep 29 00:22 qwt_plot_layout.h
    -rwxr-xr-x 1 root root  3707 Sep 29 00:22 qwt_plot_legenditem.h
    -rwxr-xr-x 1 root root  1393 Sep 29 00:22 qwt_plot_magnifier.h
    -rwxr-xr-x 1 root root  3422 Sep 29 00:22 qwt_plot_marker.h
    -rwxr-xr-x 1 root root  4018 Sep 29 00:22 qwt_plot_multi_barchart.h
    -rwxr-xr-x 1 root root  1504 Sep 29 00:22 qwt_plot_panner.h
    -rwxr-xr-x 1 root root  2806 Sep 29 00:22 qwt_plot_picker.h
    -rwxr-xr-x 1 root root  4785 Sep 29 00:22 qwt_plot_rasteritem.h
    -rwxr-xr-x 1 root root  4548 Sep 29 00:22 qwt_plot_renderer.h
    -rwxr-xr-x 1 root root  3871 Sep 29 00:22 qwt_plot_rescaler.h
    -rwxr-xr-x 1 root root  2645 Sep 29 00:22 qwt_plot_scaleitem.h
    -rwxr-xr-x 1 root root  1982 Sep 29 00:22 qwt_plot_seriesitem.h
    -rwxr-xr-x 1 root root  3267 Sep 29 00:22 qwt_plot_shapeitem.h
    -rwxr-xr-x 1 root root  2136 Sep 29 00:22 qwt_plot_spectrocurve.h
    -rwxr-xr-x 1 root root  3586 Sep 29 00:22 qwt_plot_spectrogram.h
    -rwxr-xr-x 1 root root  1546 Sep 29 00:22 qwt_plot_svgitem.h
    -rwxr-xr-x 1 root root  1842 Sep 29 00:22 qwt_plot_textlabel.h
    -rwxr-xr-x 1 root root  5211 Sep 29 00:22 qwt_plot_tradingcurve.h
    -rwxr-xr-x 1 root root  1755 Sep 29 00:22 qwt_plot_zoneitem.h
    -rwxr-xr-x 1 root root  4290 Sep 29 00:22 qwt_plot_zoomer.h
    -rwxr-xr-x 1 root root  3961 Sep 29 00:22 qwt_point_3d.h
    -rwxr-xr-x 1 root root  3588 Sep 29 00:22 qwt_point_data.h
    -rwxr-xr-x 1 root root  2682 Sep 29 00:22 qwt_point_mapper.h
    -rwxr-xr-x 1 root root  4570 Sep 29 00:22 qwt_point_polar.h
    -rwxr-xr-x 1 root root  2684 Sep 29 00:22 qwt_raster_data.h
    -rwxr-xr-x 1 root root  1956 Sep 29 00:22 qwt_round_scale_draw.h
    -rwxr-xr-x 1 root root  4960 Sep 29 00:22 qwt_samples.h
    -rwxr-xr-x 1 root root  1475 Sep 29 00:22 qwt_sampling_thread.h
    -rwxr-xr-x 1 root root  2754 Sep 29 00:22 qwt_scale_div.h
    -rwxr-xr-x 1 root root  3168 Sep 29 00:22 qwt_scale_draw.h
    -rwxr-xr-x 1 root root  6293 Sep 29 00:22 qwt_scale_engine.h
    -rwxr-xr-x 1 root root  3776 Sep 29 00:22 qwt_scale_map.h
    -rwxr-xr-x 1 root root  3547 Sep 29 00:22 qwt_scale_widget.h
    -rwxr-xr-x 1 root root  9389 Sep 29 00:22 qwt_series_data.h
    -rwxr-xr-x 1 root root  5151 Sep 29 00:22 qwt_series_store.h
    -rwxr-xr-x 1 root root  3493 Sep 29 00:22 qwt_slider.h
    -rwxr-xr-x 1 root root  2433 Sep 29 00:22 qwt_spline.h
    -rwxr-xr-x 1 root root  6209 Sep 29 00:22 qwt_symbol.h
    -rwxr-xr-x 1 root root  1425 Sep 29 00:22 qwt_system_clock.h
    -rwxr-xr-x 1 root root  4853 Sep 29 00:22 qwt_text_engine.h
    -rwxr-xr-x 1 root root  6188 Sep 29 00:22 qwt_text.h
    -rwxr-xr-x 1 root root  1845 Sep 29 00:22 qwt_text_label.h
    -rwxr-xr-x 1 root root  4686 Sep 29 00:22 qwt_thermo.h
    -rwxr-xr-x 1 root root  3603 Sep 29 00:22 qwt_transform.h
    -rwxr-xr-x 1 root root  4850 Sep 29 00:22 qwt_wheel.h
    -rwxr-xr-x 1 root root  4058 Sep 29 00:22 qwt_widget_overlay.h
    
    


  • @JonB

    Thank you for for explain strip command in detail. Yes, My header files are marked as executable thats why it may executable on all header files.


  • Lifetime Qt Champion

    Then remove the executable bit. qmake thinks it's an executable otherwise.


  • Lifetime Qt Champion

    @Yash001 and do yourself a favor and build programs as normal user, not as root.

    you can compile everything in your home and just exec sudo make install afterwards.

    Regards



  • @aha_1980
    some time without root permission I am getting other error.
    qmake give permission to header file as executable as @Christian-Ehrlicher said.

    what is correct location to install the Qt in Linux /opt/Qt or ~/ or any other location.

    Currently my Qt is install at ```/opt/Qt`` location. If I will run qt as normal user then it is not open the serial port. If I will run my qt as root user then it is open the serial port.

    Are you recommended to change the Qt location?


  • Lifetime Qt Champion

    Hi,

    If it's only a question of serial port access, you should update your user groups to include the one allowed to access the serial port rather than running application as root.



  • @Christian-Ehrlicher
    Thank you for quick response.
    I will change the the permission of all header files. I am just trying to figure out my Qt location is not install at wrong location. I am curious to know. how permission is assign to newly created file in Linux. Is it inherited from parent folder?


  • Lifetime Qt Champion

    @Yash001

    If I will run my qt as root user then it is open the serial port.

    Add yourself to the group dialout and you're done.

    Do not run programs as root until you know what you are doing. You will brick your system and your data. There is no safety net.

    Regards


  • Lifetime Qt Champion

    @Yash001

    Is it inherited from parent folder?

    Short answer: yes.



  • @aha_1980
    Thank you so much sir, for giving clear idea on access application or utility without root.


Log in to reply